home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / bibtex / bibtex.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-06-22  |  216.7 KB  |  9,582 lines

  1. #include "bibtex.h"
  2. jmp_buf jmp9998, jmp32; int lab31=0;
  3. /* 9998 9999 31 32 9932 */ 
  4. #define bufsize 3000 
  5. #define minprintline 3 
  6. #define maxprintline 79 
  7. #define auxstacksize 20 
  8. #define maxbibfiles 20 
  9. #define poolsize 120000L 
  10. #define maxstrings 4000 
  11. #define maxcites 750 
  12. #define mincrossrefs 2 
  13. #define wizfnspace 3000 
  14. #define singlefnspace 100 
  15. #define maxentints 3000 
  16. #define maxentstrs 3000 
  17. #define entstrsize 100 
  18. #define globstrsize 1000 
  19. #define maxfields 17250 
  20. #define litstksize 100 
  21. #define numbltinfns 37 
  22. typedef schar ASCIIcode  ; 
  23. typedef schar lextype  ; 
  24. typedef schar idtype  ; 
  25. typedef file_ptr /* of  char */ alphafile  ; 
  26. typedef integer bufpointer  ; 
  27. typedef ASCIIcode buftype [bufsize + 1] ; 
  28. typedef integer poolpointer  ; 
  29. typedef integer strnumber  ; 
  30. typedef short hashloc  ; 
  31. typedef short hashpointer  ; 
  32. typedef schar strilk  ; 
  33. typedef schar pdsloc  ; 
  34. typedef schar pdslen  ; 
  35. typedef char pdstype [13] ; 
  36. typedef integer auxnumber  ; 
  37. typedef integer bibnumber  ; 
  38. typedef integer citenumber  ; 
  39. typedef schar fnclass  ; 
  40. typedef integer wizfnloc  ; 
  41. typedef integer intentloc  ; 
  42. typedef integer strentloc  ; 
  43. typedef schar strglobloc  ; 
  44. typedef integer fieldloc  ; 
  45. typedef short hashptr2  ; 
  46. typedef integer litstkloc  ; 
  47. typedef schar stktype  ; 
  48. typedef integer bltinrange  ; 
  49. integer bad  ; 
  50. schar history  ; 
  51. integer errcount  ; 
  52. ASCIIcode xord[128]  ; 
  53. char xchr[128]  ; 
  54. lextype lexclass[128]  ; 
  55. idtype idclass[128]  ; 
  56. integer charwidth[128]  ; 
  57. integer stringwidth  ; 
  58. char nameoffile[1025], realnameoffile[1025]  ; 
  59. short namelength  ; 
  60. short nameptr  ; 
  61. buftype buffer  ; 
  62. bufpointer last  ; 
  63. buftype svbuffer  ; 
  64. bufpointer svptr1  ; 
  65. bufpointer svptr2  ; 
  66. integer tmpptr, tmpendptr  ; 
  67. ASCIIcode strpool[poolsize + 1]  ; 
  68. poolpointer strstart[maxstrings + 1]  ; 
  69. poolpointer poolptr  ; 
  70. strnumber strptr  ; 
  71. strnumber strnum  ; 
  72. poolpointer pptr1, pptr2  ; 
  73. hashpointer hashnext[5001]  ; 
  74. strnumber hashtext[5001]  ; 
  75. strilk hashilk[5001]  ; 
  76. integer ilkinfo[5001]  ; 
  77. short hashused  ; 
  78. boolean hashfound  ; 
  79. hashloc dummyloc  ; 
  80. strnumber sauxextension  ; 
  81. strnumber slogextension  ; 
  82. strnumber sbblextension  ; 
  83. strnumber sbstextension  ; 
  84. strnumber sbibextension  ; 
  85. strnumber sbstarea  ; 
  86. strnumber sbibarea  ; 
  87. hashloc predefloc  ; 
  88. integer commandnum  ; 
  89. bufpointer bufptr1  ; 
  90. bufpointer bufptr2  ; 
  91. schar scanresult  ; 
  92. integer tokenvalue  ; 
  93. short auxnamelength  ; 
  94. alphafile auxfile[auxstacksize + 1]  ; 
  95. strnumber auxlist[auxstacksize + 1]  ; 
  96. auxnumber auxptr  ; 
  97. integer auxlnstack[auxstacksize + 1]  ; 
  98. strnumber toplevstr  ; 
  99. alphafile logfile  ; 
  100. alphafile bblfile  ; 
  101. strnumber biblist[maxbibfiles + 1]  ; 
  102. bibnumber bibptr  ; 
  103. bibnumber numbibfiles  ; 
  104. boolean bibseen  ; 
  105. alphafile bibfile[maxbibfiles + 1]  ; 
  106. boolean bstseen  ; 
  107. strnumber bststr  ; 
  108. alphafile bstfile  ; 
  109. strnumber citelist[maxcites + 1]  ; 
  110. citenumber citeptr  ; 
  111. citenumber entryciteptr  ; 
  112. citenumber numcites  ; 
  113. citenumber oldnumcites  ; 
  114. boolean citationseen  ; 
  115. hashloc citeloc  ; 
  116. hashloc lcciteloc  ; 
  117. hashloc lcxciteloc  ; 
  118. boolean citefound  ; 
  119. boolean allentries  ; 
  120. citenumber allmarker  ; 
  121. integer bbllinenum  ; 
  122. integer bstlinenum  ; 
  123. hashloc fnloc  ; 
  124. hashloc wizloc  ; 
  125. hashloc literalloc  ; 
  126. hashloc macronameloc  ; 
  127. hashloc macrodefloc  ; 
  128. fnclass fntype[5001]  ; 
  129. wizfnloc wizdefptr  ; 
  130. wizfnloc wizfnptr  ; 
  131. hashptr2 wizfunctions[wizfnspace + 1]  ; 
  132. intentloc intentptr  ; 
  133. integer entryints[maxentints + 1]  ; 
  134. intentloc numentints  ; 
  135. strentloc strentptr  ; 
  136. ASCIIcode entrystrs[maxentstrs + 1][entstrsize + 1]  ; 
  137. strentloc numentstrs  ; 
  138. schar strglbptr  ; 
  139. strnumber glbstrptr[10]  ; 
  140. ASCIIcode globalstrs[10][globstrsize + 1]  ; 
  141. integer glbstrend[10]  ; 
  142. schar numglbstrs  ; 
  143. fieldloc fieldptr  ; 
  144. fieldloc fieldparentptr, fieldendptr  ; 
  145. citenumber citeparentptr, citexptr  ; 
  146. strnumber fieldinfo[maxfields + 1]  ; 
  147. fieldloc numfields  ; 
  148. fieldloc numpredefinedfields  ; 
  149. fieldloc crossrefnum  ; 
  150. boolean nofields  ; 
  151. boolean entryseen  ; 
  152. boolean readseen  ; 
  153. boolean readperformed  ; 
  154. boolean readingcompleted  ; 
  155. boolean readcompleted  ; 
  156. integer implfnnum  ; 
  157. integer biblinenum  ; 
  158. hashloc entrytypeloc  ; 
  159. hashptr2 typelist[maxcites + 1]  ; 
  160. boolean typeexists  ; 
  161. boolean entryexists[maxcites + 1]  ; 
  162. boolean storeentry  ; 
  163. hashloc fieldnameloc  ; 
  164. hashloc fieldvalloc  ; 
  165. boolean storefield  ; 
  166. boolean storetoken  ; 
  167. ASCIIcode rightouterdelim  ; 
  168. ASCIIcode rightstrdelim  ; 
  169. boolean atbibcommand  ; 
  170. hashloc curmacroloc  ; 
  171. strnumber citeinfo[maxcites + 1]  ; 
  172. boolean citehashfound  ; 
  173. bibnumber preambleptr  ; 
  174. bibnumber numpreamblestrings  ; 
  175. integer bibbracelevel  ; 
  176. integer litstack[litstksize + 1]  ; 
  177. stktype litstktype[litstksize + 1]  ; 
  178. litstkloc litstkptr  ; 
  179. strnumber cmdstrptr  ; 
  180. integer entchrptr  ; 
  181. integer globchrptr  ; 
  182. buftype exbuf  ; 
  183. bufpointer exbufptr  ; 
  184. bufpointer exbuflength  ; 
  185. buftype outbuf  ; 
  186. bufpointer outbufptr  ; 
  187. bufpointer outbuflength  ; 
  188. boolean messwithentries  ; 
  189. citenumber sortciteptr  ; 
  190. strentloc sortkeynum  ; 
  191. integer bracelevel  ; 
  192. hashloc bequals  ; 
  193. hashloc bgreaterthan  ; 
  194. hashloc blessthan  ; 
  195. hashloc bplus  ; 
  196. hashloc bminus  ; 
  197. hashloc bconcatenate  ; 
  198. hashloc bgets  ; 
  199. hashloc baddperiod  ; 
  200. hashloc bcalltype  ; 
  201. hashloc bchangecase  ; 
  202. hashloc bchrtoint  ; 
  203. hashloc bcite  ; 
  204. hashloc bduplicate  ; 
  205. hashloc bempty  ; 
  206. hashloc bformatname  ; 
  207. hashloc bif  ; 
  208. hashloc binttochr  ; 
  209. hashloc binttostr  ; 
  210. hashloc bmissing  ; 
  211. hashloc bnewline  ; 
  212. hashloc bnumnames  ; 
  213. hashloc bpop  ; 
  214. hashloc bpreamble  ; 
  215. hashloc bpurify  ; 
  216. hashloc bquote  ; 
  217. hashloc bskip  ; 
  218. hashloc bstack  ; 
  219. hashloc bsubstring  ; 
  220. hashloc bswap  ; 
  221. hashloc btextlength  ; 
  222. hashloc btextprefix  ; 
  223. hashloc btopstack  ; 
  224. hashloc btype  ; 
  225. hashloc bwarning  ; 
  226. hashloc bwhile  ; 
  227. hashloc bwidth  ; 
  228. hashloc bwrite  ; 
  229. hashloc bdefault  ; 
  230. #ifdef STAT
  231. hashloc bltinloc[numbltinfns + 1]  ; 
  232. integer executioncount[numbltinfns + 1]  ; 
  233. integer totalexcount  ; 
  234. bltinrange bltinptr  ; 
  235. #endif /* STAT */
  236. strnumber snull  ; 
  237. strnumber sdefault  ; 
  238. strnumber st  ; 
  239. strnumber sl  ; 
  240. strnumber su  ; 
  241. strnumber spreamble[maxbibfiles + 1]  ; 
  242. integer poplit1, poplit2, poplit3  ; 
  243. stktype poptyp1, poptyp2, poptyp3  ; 
  244. poolpointer spptr  ; 
  245. poolpointer spxptr1, spxptr2  ; 
  246. poolpointer spend  ; 
  247. poolpointer splength, sp2length  ; 
  248. integer spbracelevel  ; 
  249. bufpointer exbufxptr, exbufyptr  ; 
  250. hashloc controlseqloc  ; 
  251. boolean precedingwhite  ; 
  252. boolean andfound  ; 
  253. integer numnames  ; 
  254. bufpointer namebfptr  ; 
  255. bufpointer namebfxptr, namebfyptr  ; 
  256. integer nmbracelevel  ; 
  257. bufpointer nametok[bufsize + 1]  ; 
  258. ASCIIcode namesepchar[bufsize + 1]  ; 
  259. bufpointer numtokens  ; 
  260. boolean tokenstarting  ; 
  261. boolean alphafound  ; 
  262. boolean doubleletter, endofgroup, tobewritten  ; 
  263. bufpointer firststart  ; 
  264. bufpointer firstend  ; 
  265. bufpointer lastend  ; 
  266. bufpointer vonstart  ; 
  267. bufpointer vonend  ; 
  268. bufpointer jrend  ; 
  269. bufpointer curtoken, lasttoken  ; 
  270. boolean usedefault  ; 
  271. bufpointer numcommas  ; 
  272. bufpointer comma1, comma2  ; 
  273. bufpointer numtextchars  ; 
  274. schar conversiontype  ; 
  275. boolean prevcolon  ; 
  276.  
  277. #include "coerce.h"
  278. void printanewline ( ) 
  279. {(void) putc('\n',  logfile );
  280.   (void) putc('\n',  stdout );
  281. void markwarning ( ) 
  282. {if ( ( history == 1 ) ) 
  283.   incr ( errcount ) ; 
  284.   else if ( ( history == 0 ) ) 
  285.   {
  286.     history = 1 ; 
  287.     errcount = 1 ; 
  288.   } 
  289. void markerror ( ) 
  290. {if ( ( history < 2 ) ) 
  291.   {
  292.     history = 2 ; 
  293.     errcount = 1 ; 
  294.   } 
  295.   else incr ( errcount ) ; 
  296. void markfatal ( ) 
  297. {history = 3 ; 
  298. void printoverflow ( ) 
  299. {{
  300.     
  301.     (void) Fputs( logfile ,  "Sorry---you've exceeded BibTeX's " ) ; 
  302.     (void) Fputs( stdout ,  "Sorry---you've exceeded BibTeX's " ) ; 
  303.   } 
  304.   markfatal () ; 
  305. void printconfusion ( ) 
  306. {{
  307.     
  308.     (void) fprintf( logfile , "%s\n",  "---this can't happen" ) ; 
  309.     (void) fprintf( stdout , "%s\n",  "---this can't happen" ) ; 
  310.   } 
  311.   {
  312.     (void) fprintf( logfile , "%s\n",  "*Please notify the BibTeX maintainer*" ) ; 
  313.     (void) fprintf( stdout , "%s\n",  "*Please notify the BibTeX maintainer*" ) ; 
  314.   } 
  315.   markfatal () ; 
  316. void bufferoverflow ( ) 
  317. {{
  318.     
  319.     printoverflow () ; 
  320.     {
  321.       (void) fprintf( logfile , "%s%ld\n",  "buffer size " , (long)bufsize ) ; 
  322.       (void) fprintf( stdout , "%s%ld\n",  "buffer size " , (long)bufsize ) ; 
  323.     } 
  324.     longjmp(jmp9998,1) ; 
  325.   } 
  326. boolean zinputln ( f ) 
  327. alphafile f ; 
  328. {/* 15 */ register boolean Result; last = 0 ; 
  329.   if ( eof ( f ) ) 
  330.   Result = false ; 
  331.   else {
  332.       
  333.     lineread ( f , bufsize ) ; 
  334.     if ( last >= bufsize ) 
  335.     {
  336.       printoverflow () ; 
  337.       {
  338.     (void) fprintf( logfile , "%s%ld\n",  "buffer size " , (long)bufsize ) ; 
  339.     (void) fprintf( stdout , "%s%ld\n",  "buffer size " , (long)bufsize ) ; 
  340.       } 
  341.       longjmp(jmp9998,1) ; 
  342.     } 
  343.     while ( ( last > 0 ) ) if ( lexclass [ buffer [ last - 1 ] ] == 1 ) 
  344.     decr ( last ) ; 
  345.     else goto lab15 ; 
  346.     lab15: Result = true ; 
  347.   } 
  348.   return(Result) ; 
  349. void zoutpoolstr ( f , s ) 
  350. alphafile f ; 
  351. strnumber s ; 
  352. {poolpointer i  ; 
  353.   if ( ( ( s < 0 ) || ( s >= strptr + 3 ) || ( s >= maxstrings ) ) ) 
  354.   {
  355.     {
  356.       (void) fprintf( logfile , "%s%ld",  "Illegal string number:" , (long)s ) ; 
  357.       (void) fprintf( stdout , "%s%ld",  "Illegal string number:" , (long)s ) ; 
  358.     } 
  359.     printconfusion () ; 
  360.     longjmp(jmp9998,1) ; 
  361.   } 
  362.   {register integer for_end; i = strstart [ s ] ; for_end = strstart [ s + 1 
  363.   ] - 1 ; if ( i <= for_end) do 
  364.     (void) putc( xchr [ strpool [ i ] ] ,  f );
  365.   while ( i++ < for_end ) ; } 
  366. void zprintapoolstr ( s ) 
  367. strnumber s ; 
  368. {outpoolstr ( stdout , s ) ; 
  369.   outpoolstr ( logfile , s ) ; 
  370. void pooloverflow ( ) 
  371. {{
  372.     
  373.     printoverflow () ; 
  374.     {
  375.       (void) fprintf( logfile , "%s%ld\n",  "pool size " , (long)poolsize ) ; 
  376.       (void) fprintf( stdout , "%s%ld\n",  "pool size " , (long)poolsize ) ; 
  377.     } 
  378.     longjmp(jmp9998,1) ; 
  379.   } 
  380. void filenmsizeoverflow ( ) 
  381. {{
  382.     
  383.     printoverflow () ; 
  384.     {
  385.       (void) fprintf( logfile , "%s%ld\n",  "file name size " , (long)1024 ) ; 
  386.       (void) fprintf( stdout , "%s%ld\n",  "file name size " , (long)1024 ) ; 
  387.     } 
  388.     longjmp(jmp9998,1) ; 
  389.   } 
  390. void zouttoken ( f ) 
  391. alphafile f ; 
  392. {bufpointer i  ; 
  393.   i = bufptr1 ; 
  394.   while ( ( i < bufptr2 ) ) {
  395.       
  396.     (void) putc( xchr [ buffer [ i ] ] ,  f );
  397.     incr ( i ) ; 
  398.   } 
  399. void printatoken ( ) 
  400. {outtoken ( stdout ) ; 
  401.   outtoken ( logfile ) ; 
  402. void printbadinputline ( ) 
  403. {bufpointer bfptr  ; 
  404.   {
  405.     (void) Fputs( logfile ,  " : " ) ; 
  406.     (void) Fputs( stdout ,  " : " ) ; 
  407.   } 
  408.   bfptr = 0 ; 
  409.   while ( ( bfptr < bufptr2 ) ) {
  410.       
  411.     if ( ( lexclass [ buffer [ bfptr ] ] == 1 ) ) 
  412.     {
  413.       (void) putc( xchr [ 32 ] ,  logfile );
  414.       (void) putc( xchr [ 32 ] ,  stdout );
  415.     } 
  416.     else {
  417.     
  418.       (void) putc( xchr [ buffer [ bfptr ] ] ,  logfile );
  419.       (void) putc( xchr [ buffer [ bfptr ] ] ,  stdout );
  420.     } 
  421.     incr ( bfptr ) ; 
  422.   } 
  423.   printanewline () ; 
  424.   {
  425.     (void) Fputs( logfile ,  " : " ) ; 
  426.     (void) Fputs( stdout ,  " : " ) ; 
  427.   } 
  428.   bfptr = 0 ; 
  429.   while ( ( bfptr < bufptr2 ) ) {
  430.       
  431.     {
  432.       (void) putc( xchr [ 32 ] ,  logfile );
  433.       (void) putc( xchr [ 32 ] ,  stdout );
  434.     } 
  435.     incr ( bfptr ) ; 
  436.   } 
  437.   bfptr = bufptr2 ; 
  438.   while ( ( bfptr < last ) ) {
  439.       
  440.     if ( ( lexclass [ buffer [ bfptr ] ] == 1 ) ) 
  441.     {
  442.       (void) putc( xchr [ 32 ] ,  logfile );
  443.       (void) putc( xchr [ 32 ] ,  stdout );
  444.     } 
  445.     else {
  446.     
  447.       (void) putc( xchr [ buffer [ bfptr ] ] ,  logfile );
  448.       (void) putc( xchr [ buffer [ bfptr ] ] ,  stdout );
  449.     } 
  450.     incr ( bfptr ) ; 
  451.   } 
  452.   printanewline () ; 
  453.   bfptr = 0 ; 
  454.   while ( ( ( bfptr < bufptr2 ) && ( lexclass [ buffer [ bfptr ] ] == 1 ) ) ) 
  455.   incr ( bfptr ) ; 
  456.   if ( ( bfptr == bufptr2 ) ) 
  457.   {
  458.     (void) fprintf( logfile , "%s\n",  "(Error may have been on previous line)" ) ; 
  459.     (void) fprintf( stdout , "%s\n",  "(Error may have been on previous line)" ) ; 
  460.   } 
  461.   markerror () ; 
  462. void printskippingwhateve ( ) 
  463. {{
  464.     
  465.     (void) Fputs( logfile ,  "I'm skipping whatever remains of this " ) ; 
  466.     (void) Fputs( stdout ,  "I'm skipping whatever remains of this " ) ; 
  467.   } 
  468. void samtoolongfilenamepr ( ) 
  469. {(void) Fputs( stdout ,  "File name `" ) ; 
  470.   nameptr = 0 ; 
  471.   while ( ( nameptr < auxnamelength ) ) {
  472.       
  473.     (void) putc( nameoffile [ nameptr ] ,  stdout );
  474.     incr ( nameptr ) ; 
  475.   } 
  476.   (void) fprintf( stdout , "%s\n",  "' is too long" ) ; 
  477. void samwrongfilenameprin ( ) 
  478. {(void) Fputs( stdout ,  "I couldn't open file name `" ) ; 
  479.   nameptr = 0 ; 
  480.   while ( ( nameptr < namelength ) ) {
  481.       
  482.     (void) putc( nameoffile [ nameptr ] ,  stdout );
  483.     incr ( nameptr ) ; 
  484.   } 
  485.   (void) fprintf( stdout , "%c\n",  '\'' ) ; 
  486. void printauxname ( ) 
  487. {printapoolstr ( auxlist [ auxptr ] ) ; 
  488.   printanewline () ; 
  489. void auxerrprint ( ) 
  490. {{
  491.     
  492.     (void) fprintf( logfile , "%s%ld%s",  "---line " , (long)auxlnstack [ auxptr ] , " of file " ) ; 
  493.     (void) fprintf( stdout , "%s%ld%s",  "---line " , (long)auxlnstack [ auxptr ] , " of file " ) ; 
  494.   } 
  495.   printauxname () ; 
  496.   printbadinputline () ; 
  497.   printskippingwhateve () ; 
  498.   {
  499.     (void) fprintf( logfile , "%s\n",  "command" ) ; 
  500.     (void) fprintf( stdout , "%s\n",  "command" ) ; 
  501.   } 
  502. void zauxerrillegalanother ( cmdnum ) 
  503. integer cmdnum ; 
  504. {{
  505.     
  506.     (void) Fputs( logfile ,  "Illegal, another \\bib" ) ; 
  507.     (void) Fputs( stdout ,  "Illegal, another \\bib" ) ; 
  508.   } 
  509.   switch ( ( cmdnum ) ) 
  510.   {case 0 : 
  511.     {
  512.       (void) Fputs( logfile ,  "data" ) ; 
  513.       (void) Fputs( stdout ,  "data" ) ; 
  514.     } 
  515.     break ; 
  516.   case 1 : 
  517.     {
  518.       (void) Fputs( logfile ,  "style" ) ; 
  519.       (void) Fputs( stdout ,  "style" ) ; 
  520.     } 
  521.     break ; 
  522.     default: 
  523.     {
  524.       {
  525.     (void) Fputs( logfile ,  "Illegal auxiliary-file command" ) ; 
  526.     (void) Fputs( stdout ,  "Illegal auxiliary-file command" ) ; 
  527.       } 
  528.       printconfusion () ; 
  529.       longjmp(jmp9998,1) ; 
  530.     } 
  531.     break ; 
  532.   } 
  533.   {
  534.     (void) Fputs( logfile ,  " command" ) ; 
  535.     (void) Fputs( stdout ,  " command" ) ; 
  536.   } 
  537. void auxerrnorightbracepr ( ) 
  538. {{
  539.     
  540.     (void) fprintf( logfile , "%s%c%c",  "No \"" , xchr [ 125 ] , '"' ) ; 
  541.     (void) fprintf( stdout , "%s%c%c",  "No \"" , xchr [ 125 ] , '"' ) ; 
  542.   } 
  543. void auxerrstuffafterrigh ( ) 
  544. {{
  545.     
  546.     (void) fprintf( logfile , "%s%c%c",  "Stuff after \"" , xchr [ 125 ] , '"' ) ; 
  547.     (void) fprintf( stdout , "%s%c%c",  "Stuff after \"" , xchr [ 125 ] , '"' ) ; 
  548.   } 
  549. void auxerrwhitespaceinar ( ) 
  550. {{
  551.     
  552.     (void) Fputs( logfile ,  "White space in argument" ) ; 
  553.     (void) Fputs( stdout ,  "White space in argument" ) ; 
  554.   } 
  555. void printbibname ( ) 
  556. {printapoolstr ( biblist [ bibptr ] ) ; 
  557.   printapoolstr ( sbibextension ) ; 
  558.   printanewline () ; 
  559. void printbstname ( ) 
  560. {printapoolstr ( bststr ) ; 
  561.   printapoolstr ( sbstextension ) ; 
  562.   printanewline () ; 
  563. void hashciteconfusion ( ) 
  564. {{
  565.     
  566.     {
  567.       (void) Fputs( logfile ,  "Cite hash error" ) ; 
  568.       (void) Fputs( stdout ,  "Cite hash error" ) ; 
  569.     } 
  570.     printconfusion () ; 
  571.     longjmp(jmp9998,1) ; 
  572.   } 
  573. void zcheckciteoverflow ( lastcite ) 
  574. citenumber lastcite ; 
  575. {if ( ( lastcite == maxcites ) ) 
  576.   {
  577.     printapoolstr ( hashtext [ citeloc ] ) ; 
  578.     {
  579.       (void) fprintf( logfile , "%s\n",  " is the key:" ) ; 
  580.       (void) fprintf( stdout , "%s\n",  " is the key:" ) ; 
  581.     } 
  582.     {
  583.       printoverflow () ; 
  584.       {
  585.     (void) fprintf( logfile , "%s%ld\n",  "number of cite keys " , (long)maxcites ) ; 
  586.     (void) fprintf( stdout , "%s%ld\n",  "number of cite keys " , (long)maxcites ) ; 
  587.       } 
  588.       longjmp(jmp9998,1) ; 
  589.     } 
  590.   } 
  591. void auxend1errprint ( ) 
  592. {{
  593.     
  594.     (void) Fputs( logfile ,  "I found no " ) ; 
  595.     (void) Fputs( stdout ,  "I found no " ) ; 
  596.   } 
  597. void auxend2errprint ( ) 
  598. {{
  599.     
  600.     (void) Fputs( logfile ,  "---while reading file " ) ; 
  601.     (void) Fputs( stdout ,  "---while reading file " ) ; 
  602.   } 
  603.   printauxname () ; 
  604.   markerror () ; 
  605. void bstlnnumprint ( ) 
  606. {{
  607.     
  608.     (void) fprintf( logfile , "%s%ld%s",  "--line " , (long)bstlinenum , " of file " ) ; 
  609.     (void) fprintf( stdout , "%s%ld%s",  "--line " , (long)bstlinenum , " of file " ) ; 
  610.   } 
  611.   printbstname () ; 
  612. void bsterrprintandlookfo ( ) 
  613. {{
  614.     
  615.     (void) putc( '-' ,  logfile );
  616.     (void) putc( '-' ,  stdout );
  617.   } 
  618.   bstlnnumprint () ; 
  619.   printbadinputline () ; 
  620.   while ( ( last != 0 ) ) if ( ( ! inputln ( bstfile ) ) ) 
  621.   longjmp(jmp32,1) ; 
  622.   else incr ( bstlinenum ) ; 
  623.   bufptr2 = last ; 
  624. void bstwarnprint ( ) 
  625. {bstlnnumprint () ; 
  626.   markwarning () ; 
  627. void eatbstprint ( ) 
  628. {{
  629.     
  630.     (void) Fputs( logfile ,  "Illegal end of style file in command: " ) ; 
  631.     (void) Fputs( stdout ,  "Illegal end of style file in command: " ) ; 
  632.   } 
  633. void unknwnfunctionclassc ( ) 
  634. {{
  635.     
  636.     {
  637.       (void) Fputs( logfile ,  "Unknown function class" ) ; 
  638.       (void) Fputs( stdout ,  "Unknown function class" ) ; 
  639.     } 
  640.     printconfusion () ; 
  641.     longjmp(jmp9998,1) ; 
  642.   } 
  643. void zprintfnclass ( fnloc ) 
  644. hashloc fnloc ; 
  645. {switch ( ( fntype [ fnloc ] ) ) 
  646.   {case 0 : 
  647.     {
  648.       (void) Fputs( logfile ,  "built-in" ) ; 
  649.       (void) Fputs( stdout ,  "built-in" ) ; 
  650.     } 
  651.     break ; 
  652.   case 1 : 
  653.     {
  654.       (void) Fputs( logfile ,  "wizard-defined" ) ; 
  655.       (void) Fputs( stdout ,  "wizard-defined" ) ; 
  656.     } 
  657.     break ; 
  658.   case 2 : 
  659.     {
  660.       (void) Fputs( logfile ,  "integer-literal" ) ; 
  661.       (void) Fputs( stdout ,  "integer-literal" ) ; 
  662.     } 
  663.     break ; 
  664.   case 3 : 
  665.     {
  666.       (void) Fputs( logfile ,  "string-literal" ) ; 
  667.       (void) Fputs( stdout ,  "string-literal" ) ; 
  668.     } 
  669.     break ; 
  670.   case 4 : 
  671.     {
  672.       (void) Fputs( logfile ,  "field" ) ; 
  673.       (void) Fputs( stdout ,  "field" ) ; 
  674.     } 
  675.     break ; 
  676.   case 5 : 
  677.     {
  678.       (void) Fputs( logfile ,  "integer-entry-variable" ) ; 
  679.       (void) Fputs( stdout ,  "integer-entry-variable" ) ; 
  680.     } 
  681.     break ; 
  682.   case 6 : 
  683.     {
  684.       (void) Fputs( logfile ,  "string-entry-variable" ) ; 
  685.       (void) Fputs( stdout ,  "string-entry-variable" ) ; 
  686.     } 
  687.     break ; 
  688.   case 7 : 
  689.     {
  690.       (void) Fputs( logfile ,  "integer-global-variable" ) ; 
  691.       (void) Fputs( stdout ,  "integer-global-variable" ) ; 
  692.     } 
  693.     break ; 
  694.   case 8 : 
  695.     {
  696.       (void) Fputs( logfile ,  "string-global-variable" ) ; 
  697.       (void) Fputs( stdout ,  "string-global-variable" ) ; 
  698.     } 
  699.     break ; 
  700.     default: 
  701.     unknwnfunctionclassc () ; 
  702.     break ; 
  703.   } 
  704. #ifdef TRACE
  705. void ztraceprfnclass ( fnloc ) 
  706. hashloc fnloc ; 
  707. {switch ( ( fntype [ fnloc ] ) ) 
  708.   {case 0 : 
  709.     {
  710.       (void) Fputs( logfile ,  "built-in" ) ; 
  711.     } 
  712.     break ; 
  713.   case 1 : 
  714.     {
  715.       (void) Fputs( logfile ,  "wizard-defined" ) ; 
  716.     } 
  717.     break ; 
  718.   case 2 : 
  719.     {
  720.       (void) Fputs( logfile ,  "integer-literal" ) ; 
  721.     } 
  722.     break ; 
  723.   case 3 : 
  724.     {
  725.       (void) Fputs( logfile ,  "string-literal" ) ; 
  726.     } 
  727.     break ; 
  728.   case 4 : 
  729.     {
  730.       (void) Fputs( logfile ,  "field" ) ; 
  731.     } 
  732.     break ; 
  733.   case 5 : 
  734.     {
  735.       (void) Fputs( logfile ,  "integer-entry-variable" ) ; 
  736.     } 
  737.     break ; 
  738.   case 6 : 
  739.     {
  740.       (void) Fputs( logfile ,  "string-entry-variable" ) ; 
  741.     } 
  742.     break ; 
  743.   case 7 : 
  744.     {
  745.       (void) Fputs( logfile ,  "integer-global-variable" ) ; 
  746.     } 
  747.     break ; 
  748.   case 8 : 
  749.     {
  750.       (void) Fputs( logfile ,  "string-global-variable" ) ; 
  751.     } 
  752.     break ; 
  753.     default: 
  754.     unknwnfunctionclassc () ; 
  755.     break ; 
  756.   } 
  757. #endif /* TRACE */
  758. void idscanningconfusion ( ) 
  759. {{
  760.     
  761.     {
  762.       (void) Fputs( logfile ,  "Identifier scanning error" ) ; 
  763.       (void) Fputs( stdout ,  "Identifier scanning error" ) ; 
  764.     } 
  765.     printconfusion () ; 
  766.     longjmp(jmp9998,1) ; 
  767.   } 
  768. void bstidprint ( ) 
  769. {if ( ( scanresult == 0 ) ) 
  770.   {
  771.     (void) fprintf( logfile , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" begins identifier, command: " ) ; 
  772.     (void) fprintf( stdout , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" begins identifier, command: " ) ; 
  773.   } 
  774.   else if ( ( scanresult == 2 ) ) 
  775.   {
  776.     (void) fprintf( logfile , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" immediately follows identifier, command: " ) ; 
  777.     (void) fprintf( stdout , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" immediately follows identifier, command: " ) ; 
  778.   } 
  779.   else idscanningconfusion () ; 
  780. void bstleftbraceprint ( ) 
  781. {{
  782.     
  783.     (void) fprintf( logfile , "%c%c%s",  '"' , xchr [ 123 ] , "\" is missing in command: " ) ; 
  784.     (void) fprintf( stdout , "%c%c%s",  '"' , xchr [ 123 ] , "\" is missing in command: " ) ; 
  785.   } 
  786. void bstrightbraceprint ( ) 
  787. {{
  788.     
  789.     (void) fprintf( logfile , "%c%c%s",  '"' , xchr [ 125 ] , "\" is missing in command: " ) ; 
  790.     (void) fprintf( stdout , "%c%c%s",  '"' , xchr [ 125 ] , "\" is missing in command: " ) ; 
  791.   } 
  792. void zalreadyseenfunctionp ( seenfnloc ) 
  793. hashloc seenfnloc ; 
  794. {/* 10 */ printapoolstr ( hashtext [ seenfnloc ] ) ; 
  795.   {
  796.     (void) Fputs( logfile ,  " is already a type \"" ) ; 
  797.     (void) Fputs( stdout ,  " is already a type \"" ) ; 
  798.   } 
  799.   printfnclass ( seenfnloc ) ; 
  800.   {
  801.     (void) fprintf( logfile , "%s\n",  "\" function name" ) ; 
  802.     (void) fprintf( stdout , "%s\n",  "\" function name" ) ; 
  803.   } 
  804.   {
  805.     bsterrprintandlookfo () ; 
  806.     goto lab10 ; 
  807.   } 
  808.   lab10: ; 
  809. void singlfnoverflow ( ) 
  810. {{
  811.     
  812.     printoverflow () ; 
  813.     {
  814.       (void) fprintf( logfile , "%s%ld\n",  "single function space " , (long)singlefnspace ) ; 
  815.       (void) fprintf( stdout , "%s%ld\n",  "single function space " , (long)singlefnspace ) ; 
  816.     } 
  817.     longjmp(jmp9998,1) ; 
  818.   } 
  819. void biblnnumprint ( ) 
  820. {{
  821.     
  822.     (void) fprintf( logfile , "%s%ld%s",  "--line " , (long)biblinenum , " of file " ) ; 
  823.     (void) fprintf( stdout , "%s%ld%s",  "--line " , (long)biblinenum , " of file " ) ; 
  824.   } 
  825.   printbibname () ; 
  826. void biberrprint ( ) 
  827. {{
  828.     
  829.     (void) putc( '-' ,  logfile );
  830.     (void) putc( '-' ,  stdout );
  831.   } 
  832.   biblnnumprint () ; 
  833.   printbadinputline () ; 
  834.   printskippingwhateve () ; 
  835.   if ( ( atbibcommand ) ) 
  836.   {
  837.     (void) fprintf( logfile , "%s\n",  "command" ) ; 
  838.     (void) fprintf( stdout , "%s\n",  "command" ) ; 
  839.   } 
  840.   else {
  841.       
  842.     (void) fprintf( logfile , "%s\n",  "entry" ) ; 
  843.     (void) fprintf( stdout , "%s\n",  "entry" ) ; 
  844.   } 
  845. void bibwarnprint ( ) 
  846. {biblnnumprint () ; 
  847.   markwarning () ; 
  848. void zcheckfieldoverflow ( totalfields ) 
  849. integer totalfields ; 
  850. {if ( ( totalfields > maxfields ) ) 
  851.   {
  852.     {
  853.       (void) fprintf( logfile , "%ld%s\n",  (long)totalfields , " fields:" ) ; 
  854.       (void) fprintf( stdout , "%ld%s\n",  (long)totalfields , " fields:" ) ; 
  855.     } 
  856.     {
  857.       printoverflow () ; 
  858.       {
  859.     (void) fprintf( logfile , "%s%ld\n",  "total number of fields " , (long)maxfields ) ; 
  860.     (void) fprintf( stdout , "%s%ld\n",  "total number of fields " , (long)maxfields ) ; 
  861.       } 
  862.       longjmp(jmp9998,1) ; 
  863.     } 
  864.   } 
  865. void eatbibprint ( ) 
  866. {/* 10 */ {
  867.     
  868.     {
  869.       (void) Fputs( logfile ,  "Illegal end of database file" ) ; 
  870.       (void) Fputs( stdout ,  "Illegal end of database file" ) ; 
  871.     } 
  872.     biberrprint () ; 
  873.     goto lab10 ; 
  874.   } 
  875.   lab10: ; 
  876. void zbiboneoftwoprint ( char1 , char2 ) 
  877. ASCIIcode char1 ; 
  878. ASCIIcode char2 ; 
  879. {/* 10 */ {
  880.     
  881.     {
  882.       (void) fprintf( logfile , "%s%c%s%c%c",  "I was expecting a `" , xchr [ char1 ] , "' or a `" ,       xchr [ char2 ] , '\'' ) ; 
  883.       (void) fprintf( stdout , "%s%c%s%c%c",  "I was expecting a `" , xchr [ char1 ] , "' or a `" ,       xchr [ char2 ] , '\'' ) ; 
  884.     } 
  885.     biberrprint () ; 
  886.     goto lab10 ; 
  887.   } 
  888.   lab10: ; 
  889. void bibequalssignprint ( ) 
  890. {/* 10 */ {
  891.     
  892.     {
  893.       (void) fprintf( logfile , "%s%c%c",  "I was expecting an \"" , xchr [ 61 ] , '"' ) ; 
  894.       (void) fprintf( stdout , "%s%c%c",  "I was expecting an \"" , xchr [ 61 ] , '"' ) ; 
  895.     } 
  896.     biberrprint () ; 
  897.     goto lab10 ; 
  898.   } 
  899.   lab10: ; 
  900. void bibunbalancedbracesp ( ) 
  901. {/* 10 */ {
  902.     
  903.     {
  904.       (void) Fputs( logfile ,  "Unbalanced braces" ) ; 
  905.       (void) Fputs( stdout ,  "Unbalanced braces" ) ; 
  906.     } 
  907.     biberrprint () ; 
  908.     goto lab10 ; 
  909.   } 
  910.   lab10: ; 
  911. void bibfieldtoolongprint ( ) 
  912. {/* 10 */ {
  913.     
  914.     {
  915.       (void) fprintf( logfile , "%s%ld%s",  "Your field is more than " , (long)bufsize , " characters" ) 
  916.       ; 
  917.       (void) fprintf( stdout , "%s%ld%s",  "Your field is more than " , (long)bufsize , " characters" ) 
  918.       ; 
  919.     } 
  920.     biberrprint () ; 
  921.     goto lab10 ; 
  922.   } 
  923.   lab10: ; 
  924. void macrowarnprint ( ) 
  925. {{
  926.     
  927.     (void) Fputs( logfile ,  "Warning--string name \"" ) ; 
  928.     (void) Fputs( stdout ,  "Warning--string name \"" ) ; 
  929.   } 
  930.   printatoken () ; 
  931.   {
  932.     (void) Fputs( logfile ,  "\" is " ) ; 
  933.     (void) Fputs( stdout ,  "\" is " ) ; 
  934.   } 
  935. void bibidprint ( ) 
  936. {if ( ( scanresult == 0 ) ) 
  937.   {
  938.     (void) Fputs( logfile ,  "You're missing " ) ; 
  939.     (void) Fputs( stdout ,  "You're missing " ) ; 
  940.   } 
  941.   else if ( ( scanresult == 2 ) ) 
  942.   {
  943.     (void) fprintf( logfile , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" immediately follows " ) ; 
  944.     (void) fprintf( stdout , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" immediately follows " ) ; 
  945.   } 
  946.   else idscanningconfusion () ; 
  947. void bibcmdconfusion ( ) 
  948. {{
  949.     
  950.     {
  951.       (void) Fputs( logfile ,  "Unknown database-file command" ) ; 
  952.       (void) Fputs( stdout ,  "Unknown database-file command" ) ; 
  953.     } 
  954.     printconfusion () ; 
  955.     longjmp(jmp9998,1) ; 
  956.   } 
  957. void citekeydisappearedco ( ) 
  958. {{
  959.     
  960.     {
  961.       (void) Fputs( logfile ,  "A cite key disappeared" ) ; 
  962.       (void) Fputs( stdout ,  "A cite key disappeared" ) ; 
  963.     } 
  964.     printconfusion () ; 
  965.     longjmp(jmp9998,1) ; 
  966.   } 
  967. void zbadcrossreferencepri ( s ) 
  968. strnumber s ; 
  969. {{
  970.     
  971.     (void) Fputs( logfile ,  "--entry \"" ) ; 
  972.     (void) Fputs( stdout ,  "--entry \"" ) ; 
  973.   } 
  974.   printapoolstr ( citelist [ citeptr ] ) ; 
  975.   {
  976.     (void) fprintf( logfile , "%c\n",  '"' ) ; 
  977.     (void) fprintf( stdout , "%c\n",  '"' ) ; 
  978.   } 
  979.   {
  980.     (void) Fputs( logfile ,  "refers to entry \"" ) ; 
  981.     (void) Fputs( stdout ,  "refers to entry \"" ) ; 
  982.   } 
  983.   printapoolstr ( s ) ; 
  984. void nonexistentcrossrefe ( ) 
  985. {{
  986.     
  987.     (void) Fputs( logfile ,  "A bad cross reference-" ) ; 
  988.     (void) Fputs( stdout ,  "A bad cross reference-" ) ; 
  989.   } 
  990.   badcrossreferencepri ( fieldinfo [ fieldptr ] ) ; 
  991.   {
  992.     (void) fprintf( logfile , "%s\n",  "\", which doesn't exist" ) ; 
  993.     (void) fprintf( stdout , "%s\n",  "\", which doesn't exist" ) ; 
  994.   } 
  995.   markerror () ; 
  996. void zprintmissingentry ( s ) 
  997. strnumber s ; 
  998. {{
  999.     
  1000.     (void) Fputs( logfile ,  "Warning--I didn't find a database entry for \"" ) ; 
  1001.     (void) Fputs( stdout ,  "Warning--I didn't find a database entry for \"" ) ; 
  1002.   } 
  1003.   printapoolstr ( s ) ; 
  1004.   {
  1005.     (void) fprintf( logfile , "%c\n",  '"' ) ; 
  1006.     (void) fprintf( stdout , "%c\n",  '"' ) ; 
  1007.   } 
  1008.   markwarning () ; 
  1009. void bstexwarnprint ( ) 
  1010. {if ( ( messwithentries ) ) 
  1011.   {
  1012.     {
  1013.       (void) Fputs( logfile ,  " for entry " ) ; 
  1014.       (void) Fputs( stdout ,  " for entry " ) ; 
  1015.     } 
  1016.     printapoolstr ( citelist [ citeptr ] ) ; 
  1017.   } 
  1018.   printanewline () ; 
  1019.   {
  1020.     (void) Fputs( logfile ,  "while executing-" ) ; 
  1021.     (void) Fputs( stdout ,  "while executing-" ) ; 
  1022.   } 
  1023.   bstlnnumprint () ; 
  1024.   markerror () ; 
  1025. void bstmildexwarnprint ( ) 
  1026. {if ( ( messwithentries ) ) 
  1027.   {
  1028.     {
  1029.       (void) Fputs( logfile ,  " for entry " ) ; 
  1030.       (void) Fputs( stdout ,  " for entry " ) ; 
  1031.     } 
  1032.     printapoolstr ( citelist [ citeptr ] ) ; 
  1033.   } 
  1034.   printanewline () ; 
  1035.   {
  1036.     {
  1037.       (void) Fputs( logfile ,  "while executing" ) ; 
  1038.       (void) Fputs( stdout ,  "while executing" ) ; 
  1039.     } 
  1040.     bstwarnprint () ; 
  1041.   } 
  1042. void bstcantmesswithentri ( ) 
  1043. {{
  1044.     
  1045.     {
  1046.       (void) Fputs( logfile ,  "You can't mess with entries here" ) ; 
  1047.       (void) Fputs( stdout ,  "You can't mess with entries here" ) ; 
  1048.     } 
  1049.     bstexwarnprint () ; 
  1050.   } 
  1051. void illeglliteralconfusi ( ) 
  1052. {{
  1053.     
  1054.     {
  1055.       (void) Fputs( logfile ,  "Illegal literal type" ) ; 
  1056.       (void) Fputs( stdout ,  "Illegal literal type" ) ; 
  1057.     } 
  1058.     printconfusion () ; 
  1059.     longjmp(jmp9998,1) ; 
  1060.   } 
  1061. void unknwnliteralconfusi ( ) 
  1062. {{
  1063.     
  1064.     {
  1065.       (void) Fputs( logfile ,  "Unknown literal type" ) ; 
  1066.       (void) Fputs( stdout ,  "Unknown literal type" ) ; 
  1067.     } 
  1068.     printconfusion () ; 
  1069.     longjmp(jmp9998,1) ; 
  1070.   } 
  1071. void zprintstklit ( stklt , stktp ) 
  1072. integer stklt ; 
  1073. stktype stktp ; 
  1074. {switch ( ( stktp ) ) 
  1075.   {case 0 : 
  1076.     {
  1077.       (void) fprintf( logfile , "%ld%s",  (long)stklt , " is an integer literal" ) ; 
  1078.       (void) fprintf( stdout , "%ld%s",  (long)stklt , " is an integer literal" ) ; 
  1079.     } 
  1080.     break ; 
  1081.   case 1 : 
  1082.     {
  1083.       {
  1084.     (void) putc( '"' ,  logfile );
  1085.     (void) putc( '"' ,  stdout );
  1086.       } 
  1087.       printapoolstr ( stklt ) ; 
  1088.       {
  1089.     (void) Fputs( logfile ,  "\" is a string literal" ) ; 
  1090.     (void) Fputs( stdout ,  "\" is a string literal" ) ; 
  1091.       } 
  1092.     } 
  1093.     break ; 
  1094.   case 2 : 
  1095.     {
  1096.       {
  1097.     (void) putc( '`' ,  logfile );
  1098.     (void) putc( '`' ,  stdout );
  1099.       } 
  1100.       printapoolstr ( hashtext [ stklt ] ) ; 
  1101.       {
  1102.     (void) Fputs( logfile ,  "' is a function literal" ) ; 
  1103.     (void) Fputs( stdout ,  "' is a function literal" ) ; 
  1104.       } 
  1105.     } 
  1106.     break ; 
  1107.   case 3 : 
  1108.     {
  1109.       {
  1110.     (void) putc( '`' ,  logfile );
  1111.     (void) putc( '`' ,  stdout );
  1112.       } 
  1113.       printapoolstr ( stklt ) ; 
  1114.       {
  1115.     (void) Fputs( logfile ,  "' is a missing field" ) ; 
  1116.     (void) Fputs( stdout ,  "' is a missing field" ) ; 
  1117.       } 
  1118.     } 
  1119.     break ; 
  1120.   case 4 : 
  1121.     illeglliteralconfusi () ; 
  1122.     break ; 
  1123.     default: 
  1124.     unknwnliteralconfusi () ; 
  1125.     break ; 
  1126.   } 
  1127. void zprintlit ( stklt , stktp ) 
  1128. integer stklt ; 
  1129. stktype stktp ; 
  1130. {switch ( ( stktp ) ) 
  1131.   {case 0 : 
  1132.     {
  1133.       (void) fprintf( logfile , "%ld\n",  (long)stklt ) ; 
  1134.       (void) fprintf( stdout , "%ld\n",  (long)stklt ) ; 
  1135.     } 
  1136.     break ; 
  1137.   case 1 : 
  1138.     {
  1139.       printapoolstr ( stklt ) ; 
  1140.       printanewline () ; 
  1141.     } 
  1142.     break ; 
  1143.   case 2 : 
  1144.     {
  1145.       printapoolstr ( hashtext [ stklt ] ) ; 
  1146.       printanewline () ; 
  1147.     } 
  1148.     break ; 
  1149.   case 3 : 
  1150.     {
  1151.       printapoolstr ( stklt ) ; 
  1152.       printanewline () ; 
  1153.     } 
  1154.     break ; 
  1155.   case 4 : 
  1156.     illeglliteralconfusi () ; 
  1157.     break ; 
  1158.     default: 
  1159.     unknwnliteralconfusi () ; 
  1160.     break ; 
  1161.   } 
  1162. void outputbblline ( ) 
  1163. {/* 15 10 */ if ( ( outbuflength != 0 ) ) 
  1164.   {
  1165.     while ( ( outbuflength > 0 ) ) if ( ( lexclass [ outbuf [ outbuflength - 1 
  1166.     ] ] == 1 ) ) 
  1167.     decr ( outbuflength ) ; 
  1168.     else goto lab15 ; 
  1169.     lab15: if ( ( outbuflength == 0 ) ) 
  1170.     goto lab10 ; 
  1171.     outbufptr = 0 ; 
  1172.     while ( ( outbufptr < outbuflength ) ) {
  1173.     
  1174.       (void) putc( xchr [ outbuf [ outbufptr ] ] ,  bblfile );
  1175.       incr ( outbufptr ) ; 
  1176.     } 
  1177.   } 
  1178.   (void) putc('\n',  bblfile );
  1179.   incr ( bbllinenum ) ; 
  1180.   outbuflength = 0 ; 
  1181.   lab10: ; 
  1182. void bst1printstringsizee ( ) 
  1183. {{
  1184.     
  1185.     (void) Fputs( logfile ,  "Warning--you've exceeded " ) ; 
  1186.     (void) Fputs( stdout ,  "Warning--you've exceeded " ) ; 
  1187.   } 
  1188. void bst2printstringsizee ( ) 
  1189. {{
  1190.     
  1191.     (void) Fputs( logfile ,  "-string-size," ) ; 
  1192.     (void) Fputs( stdout ,  "-string-size," ) ; 
  1193.   } 
  1194.   bstmildexwarnprint () ; 
  1195.   {
  1196.     (void) fprintf( logfile , "%s\n",  "*Please notify the bibstyle designer*" ) ; 
  1197.     (void) fprintf( stdout , "%s\n",  "*Please notify the bibstyle designer*" ) ; 
  1198.   } 
  1199. void zbracesunbalancedcomp ( poplitvar ) 
  1200. strnumber poplitvar ; 
  1201. {{
  1202.     
  1203.     (void) Fputs( logfile ,  "Warning--\"" ) ; 
  1204.     (void) Fputs( stdout ,  "Warning--\"" ) ; 
  1205.   } 
  1206.   printapoolstr ( poplitvar ) ; 
  1207.   {
  1208.     {
  1209.       (void) Fputs( logfile ,  "\" isn't a brace-balanced string" ) ; 
  1210.       (void) Fputs( stdout ,  "\" isn't a brace-balanced string" ) ; 
  1211.     } 
  1212.     bstmildexwarnprint () ; 
  1213.   } 
  1214. void caseconversionconfus ( ) 
  1215. {{
  1216.     
  1217.     {
  1218.       (void) Fputs( logfile ,  "Unknown type of case conversion" ) ; 
  1219.       (void) Fputs( stdout ,  "Unknown type of case conversion" ) ; 
  1220.     } 
  1221.     printconfusion () ; 
  1222.     longjmp(jmp9998,1) ; 
  1223.   } 
  1224. void traceandstatprinting ( ) 
  1225. {
  1226.     ;
  1227. #ifdef TRACE
  1228.   {
  1229.     if ( ( numbibfiles == 1 ) ) 
  1230.     {
  1231.       (void) fprintf( logfile , "%s\n",  "The 1 database file is" ) ; 
  1232.     } 
  1233.     else {
  1234.     
  1235.       (void) fprintf( logfile , "%s%ld%s\n",  "The " , (long)numbibfiles , " database files are" ) ; 
  1236.     } 
  1237.     if ( ( numbibfiles == 0 ) ) 
  1238.     {
  1239.       (void) fprintf( logfile , "%s\n",  "   undefined" ) ; 
  1240.     } 
  1241.     else {
  1242.     
  1243.       bibptr = 0 ; 
  1244.       while ( ( bibptr < numbibfiles ) ) {
  1245.       
  1246.     {
  1247.       (void) Fputs( logfile ,  "   " ) ; 
  1248.     } 
  1249.     {
  1250.       outpoolstr ( logfile , biblist [ bibptr ] ) ; 
  1251.     } 
  1252.     {
  1253.       outpoolstr ( logfile , sbibextension ) ; 
  1254.     } 
  1255.     {
  1256.       (void) putc('\n',  logfile );
  1257.     } 
  1258.     incr ( bibptr ) ; 
  1259.       } 
  1260.     } 
  1261.     {
  1262.       (void) Fputs( logfile ,  "The style file is " ) ; 
  1263.     } 
  1264.     if ( ( bststr == 0 ) ) 
  1265.     {
  1266.       (void) fprintf( logfile , "%s\n",  "undefined" ) ; 
  1267.     } 
  1268.     else {
  1269.     
  1270.       {
  1271.     outpoolstr ( logfile , bststr ) ; 
  1272.       } 
  1273.       {
  1274.     outpoolstr ( logfile , sbstextension ) ; 
  1275.       } 
  1276.       {
  1277.     (void) putc('\n',  logfile );
  1278.       } 
  1279.     } 
  1280.   } 
  1281.   {
  1282.     if ( ( allentries ) ) 
  1283.     {
  1284.       (void) fprintf( logfile , "%s%ld%s",  "all_marker=" , (long)allmarker , ", " ) ; 
  1285.     } 
  1286.     if ( ( readperformed ) ) 
  1287.     {
  1288.       (void) fprintf( logfile , "%s%ld\n",  "old_num_cites=" , (long)oldnumcites ) ; 
  1289.     } 
  1290.     else {
  1291.     
  1292.       (void) putc('\n',  logfile );
  1293.     } 
  1294.     {
  1295.       (void) fprintf( logfile , "%s%ld",  "The " , (long)numcites ) ; 
  1296.     } 
  1297.     if ( ( numcites == 1 ) ) 
  1298.     {
  1299.       (void) fprintf( logfile , "%s\n",  " entry:" ) ; 
  1300.     } 
  1301.     else {
  1302.     
  1303.       (void) fprintf( logfile , "%s\n",  " entries:" ) ; 
  1304.     } 
  1305.     if ( ( numcites == 0 ) ) 
  1306.     {
  1307.       (void) fprintf( logfile , "%s\n",  "   undefined" ) ; 
  1308.     } 
  1309.     else {
  1310.     
  1311.       sortciteptr = 0 ; 
  1312.       while ( ( sortciteptr < numcites ) ) {
  1313.       
  1314.     if ( ( ! readcompleted ) ) 
  1315.     citeptr = sortciteptr ; 
  1316.     else citeptr = citeinfo [ sortciteptr ] ; 
  1317.     {
  1318.       outpoolstr ( logfile , citelist [ citeptr ] ) ; 
  1319.     } 
  1320.     if ( ( readperformed ) ) 
  1321.     {
  1322.       {
  1323.         (void) Fputs( logfile ,  ", entry-type " ) ; 
  1324.       } 
  1325.       if ( ( typelist [ citeptr ] == 5001 ) ) 
  1326.       lab5001: {
  1327.           
  1328.         (void) Fputs( logfile ,  "unknown" ) ; 
  1329.       } 
  1330.       else if ( ( typelist [ citeptr ] == 0 ) ) 
  1331.       {
  1332.         (void) Fputs( logfile ,  "--- no type found" ) ; 
  1333.       } 
  1334.       else {
  1335.           
  1336.         outpoolstr ( logfile , hashtext [ typelist [ citeptr ] ] ) ; 
  1337.       } 
  1338.       {
  1339.         (void) fprintf( logfile , "%s\n",  ", has entry strings" ) ; 
  1340.       } 
  1341.       {
  1342.         if ( ( numentstrs == 0 ) ) 
  1343.         {
  1344.           (void) fprintf( logfile , "%s\n",  "    undefined" ) ; 
  1345.         } 
  1346.         else if ( ( ! readcompleted ) ) 
  1347.         {
  1348.           (void) fprintf( logfile , "%s\n",  "    uninitialized" ) ; 
  1349.         } 
  1350.         else {
  1351.         
  1352.           strentptr = citeptr * numentstrs ; 
  1353.           while ( ( strentptr < ( citeptr + 1 ) * numentstrs ) ) {
  1354.           
  1355.         entchrptr = 0 ; 
  1356.         {
  1357.           (void) Fputs( logfile ,  "    \"" ) ; 
  1358.         } 
  1359.         while ( ( entrystrs [ strentptr ] [ entchrptr ] != 127 ) ) {
  1360.             
  1361.           {
  1362.             (void) putc( xchr [ entrystrs [ strentptr ] [                     entchrptr ] ] ,  logfile );
  1363.           } 
  1364.           incr ( entchrptr ) ; 
  1365.         } 
  1366.         {
  1367.           (void) fprintf( logfile , "%c\n",  '"' ) ; 
  1368.         } 
  1369.         incr ( strentptr ) ; 
  1370.           } 
  1371.         } 
  1372.       } 
  1373.       {
  1374.         (void) Fputs( logfile ,  "  has entry integers" ) ; 
  1375.       } 
  1376.       {
  1377.         if ( ( numentints == 0 ) ) 
  1378.         {
  1379.           (void) Fputs( logfile ,  " undefined" ) ; 
  1380.         } 
  1381.         else if ( ( ! readcompleted ) ) 
  1382.         {
  1383.           (void) Fputs( logfile ,  " uninitialized" ) ; 
  1384.         } 
  1385.         else {
  1386.         
  1387.           intentptr = citeptr * numentints ; 
  1388.           while ( ( intentptr < ( citeptr + 1 ) * numentints ) ) {
  1389.           
  1390.         {
  1391.           (void) fprintf( logfile , "%c%ld",  ' ' , (long)entryints [ intentptr ] ) ; 
  1392.         } 
  1393.         incr ( intentptr ) ; 
  1394.           } 
  1395.         } 
  1396.         {
  1397.           (void) putc('\n',  logfile );
  1398.         } 
  1399.       } 
  1400.       {
  1401.         (void) fprintf( logfile , "%s\n",  "  and has fields" ) ; 
  1402.       } 
  1403.       {
  1404.         if ( ( ! readperformed ) ) 
  1405.         {
  1406.           (void) fprintf( logfile , "%s\n",  "    uninitialized" ) ; 
  1407.         } 
  1408.         else {
  1409.         
  1410.           fieldptr = citeptr * numfields ; 
  1411.           fieldendptr = fieldptr + numfields ; 
  1412.           nofields = true ; 
  1413.           while ( ( fieldptr < fieldendptr ) ) {
  1414.           
  1415.         if ( ( fieldinfo [ fieldptr ] != 0 ) ) 
  1416.         {
  1417.           {
  1418.             (void) Fputs( logfile ,  "    \"" ) ; 
  1419.           } 
  1420.           {
  1421.             outpoolstr ( logfile , fieldinfo [ fieldptr ] ) ; 
  1422.           } 
  1423.           {
  1424.             (void) fprintf( logfile , "%c\n",  '"' ) ; 
  1425.           } 
  1426.           nofields = false ; 
  1427.         } 
  1428.         incr ( fieldptr ) ; 
  1429.           } 
  1430.           if ( ( nofields ) ) 
  1431.           {
  1432.         (void) fprintf( logfile , "%s\n",  "    missing" ) ; 
  1433.           } 
  1434.         } 
  1435.       } 
  1436.     } 
  1437.     else {
  1438.         
  1439.       (void) putc('\n',  logfile );
  1440.     } 
  1441.     incr ( sortciteptr ) ; 
  1442.       } 
  1443.     } 
  1444.   } 
  1445.   {
  1446.     {
  1447.       (void) fprintf( logfile , "%s\n",  "The wiz-defined functions are" ) ; 
  1448.     } 
  1449.     if ( ( wizdefptr == 0 ) ) 
  1450.     {
  1451.       (void) fprintf( logfile , "%s\n",  "   nonexistent" ) ; 
  1452.     } 
  1453.     else {
  1454.     
  1455.       wizfnptr = 0 ; 
  1456.       while ( ( wizfnptr < wizdefptr ) ) {
  1457.       
  1458.     if ( ( wizfunctions [ wizfnptr ] == 5001 ) ) 
  1459.     {
  1460.       (void) fprintf( logfile , "%ld%s\n",  (long)wizfnptr , "--end-of-def--" ) ; 
  1461.     } 
  1462.     else if ( ( wizfunctions [ wizfnptr ] == 0 ) ) 
  1463.     {
  1464.       (void) fprintf( logfile , "%ld%s",  (long)wizfnptr , "  quote_next_function    " ) ; 
  1465.     } 
  1466.     else {
  1467.         
  1468.       {
  1469.         (void) fprintf( logfile , "%ld%s",  (long)wizfnptr , "  `" ) ; 
  1470.       } 
  1471.       {
  1472.         outpoolstr ( logfile , hashtext [ wizfunctions [ wizfnptr ] ] ) ; 
  1473.       } 
  1474.       {
  1475.         (void) fprintf( logfile , "%c\n",  '\'' ) ; 
  1476.       } 
  1477.     } 
  1478.     incr ( wizfnptr ) ; 
  1479.       } 
  1480.     } 
  1481.   } 
  1482.   {
  1483.     {
  1484.       (void) fprintf( logfile , "%s\n",  "The string pool is" ) ; 
  1485.     } 
  1486.     strnum = 1 ; 
  1487.     while ( ( strnum < strptr ) ) {
  1488.     
  1489.       {
  1490.     (void) fprintf( logfile , "%ld%ld%s",  (long)strnum , (long)strstart [ strnum ] , " \"" ) ; 
  1491.       } 
  1492.       {
  1493.     outpoolstr ( logfile , strnum ) ; 
  1494.       } 
  1495.       {
  1496.     (void) fprintf( logfile , "%c\n",  '"' ) ; 
  1497.       } 
  1498.       incr ( strnum ) ; 
  1499.     } 
  1500.   } 
  1501. #endif /* TRACE */
  1502.     ;
  1503. #ifdef STAT
  1504.   {
  1505.     {
  1506.       (void) fprintf( logfile , "%s%ld",  "You've used " , (long)numcites ) ; 
  1507.     } 
  1508.     if ( ( numcites == 1 ) ) 
  1509.     {
  1510.       (void) fprintf( logfile , "%s\n",  " entry," ) ; 
  1511.     } 
  1512.     else {
  1513.     
  1514.       (void) fprintf( logfile , "%s\n",  " entries," ) ; 
  1515.     } 
  1516.     {
  1517.       (void) fprintf( logfile , "%s%ld%s\n",  "            " , (long)wizdefptr ,       " wiz_defined-function locations," ) ; 
  1518.     } 
  1519.     {
  1520.       (void) fprintf( logfile , "%s%ld%s%ld%s\n",  "            " , (long)strptr , " strings with " ,       (long)strstart [ strptr ] , " characters," ) ; 
  1521.     } 
  1522.     bltinptr = 0 ; 
  1523.     totalexcount = 0 ; 
  1524.     while ( ( bltinptr < numbltinfns ) ) {
  1525.     
  1526.       totalexcount = totalexcount + executioncount [ bltinptr ] ; 
  1527.       incr ( bltinptr ) ; 
  1528.     } 
  1529.     {
  1530.       (void) fprintf( logfile , "%s%ld%s\n",  "and the built_in function-call counts, " ,       (long)totalexcount , " in all, are:" ) ; 
  1531.     } 
  1532.     bltinptr = 0 ; 
  1533.     while ( ( bltinptr < numbltinfns ) ) {
  1534.     
  1535.       {
  1536.     outpoolstr ( logfile , hashtext [ bltinloc [ bltinptr ] ] ) ; 
  1537.       } 
  1538.       {
  1539.     (void) fprintf( logfile , "%s%ld\n",  " -- " , (long)executioncount [ bltinptr ] ) ; 
  1540.       } 
  1541.       incr ( bltinptr ) ; 
  1542.     } 
  1543.   } 
  1544. #endif /* STAT */
  1545. boolean zaopenin ( f , pathspec ) 
  1546. palphafile * f ; 
  1547. integer pathspec ; 
  1548. {register boolean Result; boolean ok  ; 
  1549.   if ( testaccess ( 4 , pathspec ) ) 
  1550.   {
  1551.     reset ( *f , realnameoffile ) ; 
  1552.     ok = true ; 
  1553.   } 
  1554.   else ok = false ; 
  1555.   Result = ok ; 
  1556.   return(Result) ; 
  1557. boolean zaopenout ( f ) 
  1558. palphafile * f ; 
  1559. {register boolean Result; boolean ok  ; 
  1560.   if ( testaccess ( 2 , 0 ) ) 
  1561.   {
  1562.     rewrite ( *f , realnameoffile ) ; 
  1563.     ok = true ; 
  1564.   } 
  1565.   else ok = false ; 
  1566.   Result = ok ; 
  1567.   return(Result) ; 
  1568. void zstartname ( filename ) 
  1569. strnumber filename ; 
  1570. {poolpointer pptr  ; 
  1571.   if ( ( ( strstart [ filename + 1 ] - strstart [ filename ] ) > 1024 ) ) 
  1572.   {
  1573.     {
  1574.       (void) Fputs( logfile ,  "File=" ) ; 
  1575.       (void) Fputs( stdout ,  "File=" ) ; 
  1576.     } 
  1577.     printapoolstr ( filename ) ; 
  1578.     {
  1579.       (void) fprintf( logfile , "%c\n",  ',' ) ; 
  1580.       (void) fprintf( stdout , "%c\n",  ',' ) ; 
  1581.     } 
  1582.     filenmsizeoverflow () ; 
  1583.   } 
  1584.   nameptr = 0 ; 
  1585.   pptr = strstart [ filename ] ; 
  1586.   while ( ( pptr < strstart [ filename + 1 ] ) ) {
  1587.       
  1588.     nameoffile [ nameptr ] = chr ( strpool [ pptr ] ) ; 
  1589.     incr ( nameptr ) ; 
  1590.     incr ( pptr ) ; 
  1591.   } 
  1592.   namelength = ( strstart [ filename + 1 ] - strstart [ filename ] ) ; 
  1593. void zaddextension ( ext ) 
  1594. strnumber ext ; 
  1595. {poolpointer pptr  ; 
  1596.   if ( ( namelength + ( strstart [ ext + 1 ] - strstart [ ext ] ) > 1024 ) ) 
  1597.   {
  1598.     {
  1599.       (void) fprintf( logfile , "%s%c%s",  "File=" , nameoffile , ", extension=" ) ; 
  1600.       (void) fprintf( stdout , "%s%c%s",  "File=" , nameoffile , ", extension=" ) ; 
  1601.     } 
  1602.     printapoolstr ( ext ) ; 
  1603.     {
  1604.       (void) fprintf( logfile , "%c\n",  ',' ) ; 
  1605.       (void) fprintf( stdout , "%c\n",  ',' ) ; 
  1606.     } 
  1607.     filenmsizeoverflow () ; 
  1608.   } 
  1609.   nameptr = namelength ; 
  1610.   pptr = strstart [ ext ] ; 
  1611.   while ( ( pptr < strstart [ ext + 1 ] ) ) {
  1612.       
  1613.     nameoffile [ nameptr ] = chr ( strpool [ pptr ] ) ; 
  1614.     incr ( nameptr ) ; 
  1615.     incr ( pptr ) ; 
  1616.   } 
  1617.   namelength = namelength + ( strstart [ ext + 1 ] - strstart [ ext ] ) ; 
  1618.   nameoffile [ namelength ] = ' ' ; 
  1619. void zaddarea ( area ) 
  1620. strnumber area ; 
  1621. {poolpointer pptr  ; 
  1622.   if ( ( namelength + ( strstart [ area + 1 ] - strstart [ area ] ) > 1024 ) ) 
  1623.   {
  1624.     {
  1625.       (void) Fputs( logfile ,  "File=" ) ; 
  1626.       (void) Fputs( stdout ,  "File=" ) ; 
  1627.     } 
  1628.     printapoolstr ( area ) ; 
  1629.     printstr ( nameoffile , ',' ) ; 
  1630.     filenmsizeoverflow () ; 
  1631.   } 
  1632.   nameptr = namelength ; 
  1633.   while ( ( nameptr > 0 ) ) {
  1634.       
  1635.     nameoffile [ nameptr + ( strstart [ area + 1 ] - strstart [ area ] ) ] = 
  1636.     nameoffile [ nameptr ] ; 
  1637.     decr ( nameptr ) ; 
  1638.   } 
  1639.   nameptr = 0 ; 
  1640.   pptr = strstart [ area ] ; 
  1641.   while ( ( pptr < strstart [ area + 1 ] ) ) {
  1642.       
  1643.     nameoffile [ nameptr ] = chr ( strpool [ pptr ] ) ; 
  1644.     incr ( nameptr ) ; 
  1645.     incr ( pptr ) ; 
  1646.   } 
  1647.   namelength = namelength + ( strstart [ area + 1 ] - strstart [ area ] ) ; 
  1648. strnumber makestring ( ) 
  1649. {register strnumber Result; if ( ( strptr == maxstrings ) ) 
  1650.   {
  1651.     printoverflow () ; 
  1652.     {
  1653.       (void) fprintf( logfile , "%s%ld\n",  "number of strings " , (long)maxstrings ) ; 
  1654.       (void) fprintf( stdout , "%s%ld\n",  "number of strings " , (long)maxstrings ) ; 
  1655.     } 
  1656.     longjmp(jmp9998,1) ; 
  1657.   } 
  1658.   incr ( strptr ) ; 
  1659.   strstart [ strptr ] = poolptr ; 
  1660.   Result = strptr - 1 ; 
  1661.   return(Result) ; 
  1662. boolean zstreqbuf ( s , buf , bfptr , len ) 
  1663. strnumber s ; 
  1664. buftype buf ; 
  1665. bufpointer bfptr ; 
  1666. bufpointer len ; 
  1667. {/* 10 */ register boolean Result; bufpointer i  ; 
  1668.   poolpointer j  ; 
  1669.   if ( ( ( strstart [ s + 1 ] - strstart [ s ] ) != len ) ) 
  1670.   {
  1671.     Result = false ; 
  1672.     goto lab10 ; 
  1673.   } 
  1674.   i = bfptr ; 
  1675.   j = strstart [ s ] ; 
  1676.   while ( ( j < strstart [ s + 1 ] ) ) {
  1677.       
  1678.     if ( ( strpool [ j ] != buf [ i ] ) ) 
  1679.     {
  1680.       Result = false ; 
  1681.       goto lab10 ; 
  1682.     } 
  1683.     incr ( i ) ; 
  1684.     incr ( j ) ; 
  1685.   } 
  1686.   Result = true ; 
  1687.   lab10: ; 
  1688.   return(Result) ; 
  1689. boolean zstreqstr ( s1 , s2 ) 
  1690. strnumber s1 ; 
  1691. strnumber s2 ; 
  1692. {/* 10 */ register boolean Result; if ( ( ( strstart [ s1 + 1 ] - strstart [ 
  1693.   s1 ] ) != ( strstart [ s2 + 1 ] - strstart [ s2 ] ) ) ) 
  1694.   {
  1695.     Result = false ; 
  1696.     goto lab10 ; 
  1697.   } 
  1698.   pptr1 = strstart [ s1 ] ; 
  1699.   pptr2 = strstart [ s2 ] ; 
  1700.   while ( ( pptr1 < strstart [ s1 + 1 ] ) ) {
  1701.       
  1702.     if ( ( strpool [ pptr1 ] != strpool [ pptr2 ] ) ) 
  1703.     {
  1704.       Result = false ; 
  1705.       goto lab10 ; 
  1706.     } 
  1707.     incr ( pptr1 ) ; 
  1708.     incr ( pptr2 ) ; 
  1709.   } 
  1710.   Result = true ; 
  1711.   lab10: ; 
  1712.   return(Result) ; 
  1713. void zlowercase ( buf , bfptr , len ) 
  1714. buftype buf ; 
  1715. bufpointer bfptr ; 
  1716. bufpointer len ; 
  1717. {bufpointer i  ; 
  1718.   if ( ( len > 0 ) ) 
  1719.   {register integer for_end; i = bfptr ; for_end = bfptr + len - 1 ; if ( i 
  1720.   <= for_end) do 
  1721.     if ( ( ( buf [ i ] >= 65 ) && ( buf [ i ] <= 90 ) ) ) 
  1722.     buf [ i ] = buf [ i ] + 32 ; 
  1723.   while ( i++ < for_end ) ; } 
  1724. void zuppercase ( buf , bfptr , len ) 
  1725. buftype buf ; 
  1726. bufpointer bfptr ; 
  1727. bufpointer len ; 
  1728. {bufpointer i  ; 
  1729.   if ( ( len > 0 ) ) 
  1730.   {register integer for_end; i = bfptr ; for_end = bfptr + len - 1 ; if ( i 
  1731.   <= for_end) do 
  1732.     if ( ( ( buf [ i ] >= 97 ) && ( buf [ i ] <= 122 ) ) ) 
  1733.     buf [ i ] = buf [ i ] - 32 ; 
  1734.   while ( i++ < for_end ) ; } 
  1735. hashloc zstrlookup ( buf , j , l , ilk , insertit ) 
  1736. buftype buf ; 
  1737. bufpointer j ; 
  1738. bufpointer l ; 
  1739. strilk ilk ; 
  1740. boolean insertit ; 
  1741. {/* 40 45 */ register hashloc Result; short h  ; 
  1742.   hashloc p  ; 
  1743.   bufpointer k  ; 
  1744.   boolean oldstring  ; 
  1745.   strnumber strnum  ; 
  1746.   {
  1747.     h = 0 ; 
  1748.     k = j ; 
  1749.     while ( ( k < j + l ) ) {
  1750.     
  1751.       h = h + h + buf [ k ] ; 
  1752.       while ( ( h >= 4253 ) ) h = h - 4253 ; 
  1753.       incr ( k ) ; 
  1754.     } 
  1755.   } 
  1756.   p = h + 1 ; 
  1757.   hashfound = false ; 
  1758.   oldstring = false ; 
  1759.   while ( true ) {
  1760.       
  1761.     {
  1762.       if ( ( hashtext [ p ] > 0 ) ) 
  1763.       if ( ( streqbuf ( hashtext [ p ] , buf , j , l ) ) ) 
  1764.       if ( ( hashilk [ p ] == ilk ) ) 
  1765.       {
  1766.     hashfound = true ; 
  1767.     goto lab40 ; 
  1768.       } 
  1769.       else {
  1770.       
  1771.     oldstring = true ; 
  1772.     strnum = hashtext [ p ] ; 
  1773.       } 
  1774.     } 
  1775.     if ( ( hashnext [ p ] == 0 ) ) 
  1776.     {
  1777.       if ( ( ! insertit ) ) 
  1778.       goto lab45 ; 
  1779.       {
  1780.     if ( ( hashtext [ p ] > 0 ) ) 
  1781.     {
  1782.       do {
  1783.           if ( ( ( hashused == 1 ) ) ) 
  1784.         {
  1785.           printoverflow () ; 
  1786.           {
  1787.         (void) fprintf( logfile , "%s%ld\n",  "hash size " , (long)5000 ) ; 
  1788.         (void) fprintf( stdout , "%s%ld\n",  "hash size " , (long)5000 ) ; 
  1789.           } 
  1790.           longjmp(jmp9998,1) ; 
  1791.         } 
  1792.         decr ( hashused ) ; 
  1793.       } while ( ! ( ( hashtext [ hashused ] == 0 ) ) ) ; 
  1794.       hashnext [ p ] = hashused ; 
  1795.       p = hashused ; 
  1796.     } 
  1797.     if ( ( oldstring ) ) 
  1798.     hashtext [ p ] = strnum ; 
  1799.     else {
  1800.         
  1801.       {
  1802.         if ( ( poolptr + l > poolsize ) ) 
  1803.         pooloverflow () ; 
  1804.       } 
  1805.       k = j ; 
  1806.       while ( ( k < j + l ) ) {
  1807.           
  1808.         {
  1809.           strpool [ poolptr ] = buf [ k ] ; 
  1810.           incr ( poolptr ) ; 
  1811.         } 
  1812.         incr ( k ) ; 
  1813.       } 
  1814.       hashtext [ p ] = makestring () ; 
  1815.     } 
  1816.     hashilk [ p ] = ilk ; 
  1817.       } 
  1818.       goto lab40 ; 
  1819.     } 
  1820.     p = hashnext [ p ] ; 
  1821.   } 
  1822.   lab45: ; 
  1823.   lab40: Result = p ; 
  1824.   return(Result) ; 
  1825. void zpredefine ( pds , len , ilk ) 
  1826. pdstype pds ; 
  1827. pdslen len ; 
  1828. strilk ilk ; 
  1829. {pdslen i  ; 
  1830.   {register integer for_end; i = 1 ; for_end = len ; if ( i <= for_end) do 
  1831.     buffer [ i ] = xord [ pds [ i - 1 ] ] ; 
  1832.   while ( i++ < for_end ) ; } 
  1833.   predefloc = strlookup ( buffer , 1 , len , ilk , true ) ; 
  1834. void zinttoASCII ( inte , intbuf , intbegin , intend ) 
  1835. integer inte ; 
  1836. buftype intbuf ; 
  1837. bufpointer intbegin ; 
  1838. bufpointer * intend ; 
  1839. {bufpointer intptr, intxptr  ; 
  1840.   ASCIIcode inttmpval  ; 
  1841.   intptr = intbegin ; 
  1842.   if ( ( inte < 0 ) ) 
  1843.   {
  1844.     {
  1845.       if ( ( intptr == bufsize ) ) 
  1846.       bufferoverflow () ; 
  1847.       intbuf [ intptr ] = 45 ; 
  1848.       incr ( intptr ) ; 
  1849.     } 
  1850.     inte = - (integer) inte ; 
  1851.   } 
  1852.   intxptr = intptr ; 
  1853.   do {
  1854.       { 
  1855.       if ( ( intptr == bufsize ) ) 
  1856.       bufferoverflow () ; 
  1857.       intbuf [ intptr ] = 48 + ( inte % 10 ) ; 
  1858.       incr ( intptr ) ; 
  1859.     } 
  1860.     inte = inte / 10 ; 
  1861.   } while ( ! ( ( inte == 0 ) ) ) ; 
  1862. *  intend = intptr ; 
  1863.   decr ( intptr ) ; 
  1864.   while ( ( intxptr < intptr ) ) {
  1865.       
  1866.     inttmpval = intbuf [ intxptr ] ; 
  1867.     intbuf [ intxptr ] = intbuf [ intptr ] ; 
  1868.     intbuf [ intptr ] = inttmpval ; 
  1869.     decr ( intptr ) ; 
  1870.     incr ( intxptr ) ; 
  1871.   } 
  1872. void zadddatabasecite ( newcite ) 
  1873. citenumber * newcite ; 
  1874. {checkciteoverflow ( *newcite ) ; 
  1875.   checkfieldoverflow ( numfields * *newcite ) ; 
  1876.   citelist [ *newcite ] = hashtext [ citeloc ] ; 
  1877.   ilkinfo [ citeloc ] = *newcite ; 
  1878.   ilkinfo [ lcciteloc ] = citeloc ; 
  1879.   incr ( *newcite ) ; 
  1880. boolean zfindcitelocsforthisc ( citestr ) 
  1881. strnumber citestr ; 
  1882. {register boolean Result; exbufptr = 0 ; 
  1883.   tmpptr = strstart [ citestr ] ; 
  1884.   tmpendptr = strstart [ citestr + 1 ] ; 
  1885.   while ( ( tmpptr < tmpendptr ) ) {
  1886.       
  1887.     exbuf [ exbufptr ] = strpool [ tmpptr ] ; 
  1888.     incr ( exbufptr ) ; 
  1889.     incr ( tmpptr ) ; 
  1890.   } 
  1891.   citeloc = strlookup ( exbuf , 0 , ( strstart [ citestr + 1 ] - strstart [ 
  1892.   citestr ] ) , 9 , false ) ; 
  1893.   citehashfound = hashfound ; 
  1894.   lowercase ( exbuf , 0 , ( strstart [ citestr + 1 ] - strstart [ citestr ] ) 
  1895.   ) ; 
  1896.   lcciteloc = strlookup ( exbuf , 0 , ( strstart [ citestr + 1 ] - strstart [ 
  1897.   citestr ] ) , 10 , false ) ; 
  1898.   if ( ( hashfound ) ) 
  1899.   Result = true ; 
  1900.   else Result = false ; 
  1901.   return(Result) ; 
  1902. void zswap ( swap1 , swap2 ) 
  1903. citenumber swap1 ; 
  1904. citenumber swap2 ; 
  1905. {citenumber innocentbystander  ; 
  1906.   innocentbystander = citeinfo [ swap2 ] ; 
  1907.   citeinfo [ swap2 ] = citeinfo [ swap1 ] ; 
  1908.   citeinfo [ swap1 ] = innocentbystander ; 
  1909. boolean zlessthan ( arg1 , arg2 ) 
  1910. citenumber arg1 ; 
  1911. citenumber arg2 ; 
  1912. {/* 10 */ register boolean Result; integer charptr  ; 
  1913.   strentloc ptr1, ptr2  ; 
  1914.   ASCIIcode char1, char2  ; 
  1915.   ptr1 = arg1 * numentstrs + sortkeynum ; 
  1916.   ptr2 = arg2 * numentstrs + sortkeynum ; 
  1917.   charptr = 0 ; 
  1918.   while ( true ) {
  1919.       
  1920.     char1 = entrystrs [ ptr1 ] [ charptr ] ; 
  1921.     char2 = entrystrs [ ptr2 ] [ charptr ] ; 
  1922.     if ( ( char1 == 127 ) ) 
  1923.     if ( ( char2 == 127 ) ) 
  1924.     if ( ( arg1 < arg2 ) ) 
  1925.     {
  1926.       Result = true ; 
  1927.       goto lab10 ; 
  1928.     } 
  1929.     else if ( ( arg1 > arg2 ) ) 
  1930.     {
  1931.       Result = false ; 
  1932.       goto lab10 ; 
  1933.     } 
  1934.     else {
  1935.     
  1936.       {
  1937.     (void) Fputs( logfile ,  "Duplicate sort key" ) ; 
  1938.     (void) Fputs( stdout ,  "Duplicate sort key" ) ; 
  1939.       } 
  1940.       printconfusion () ; 
  1941.       longjmp(jmp9998,1) ; 
  1942.     } 
  1943.     else {
  1944.     
  1945.       Result = true ; 
  1946.       goto lab10 ; 
  1947.     } 
  1948.     else if ( ( char2 == 127 ) ) 
  1949.     {
  1950.       Result = false ; 
  1951.       goto lab10 ; 
  1952.     } 
  1953.     else if ( ( char1 < char2 ) ) 
  1954.     {
  1955.       Result = true ; 
  1956.       goto lab10 ; 
  1957.     } 
  1958.     else if ( ( char1 > char2 ) ) 
  1959.     {
  1960.       Result = false ; 
  1961.       goto lab10 ; 
  1962.     } 
  1963.     incr ( charptr ) ; 
  1964.   } 
  1965.   lab10: ; 
  1966.   return(Result) ; 
  1967. void zquicksort ( leftend , rightend ) 
  1968. citenumber leftend ; 
  1969. citenumber rightend ; 
  1970. {/* 24 */ citenumber left, right  ; 
  1971.   citenumber insertptr  ; 
  1972.   citenumber middle  ; 
  1973.   citenumber partition  ; 
  1974.     ;
  1975. #ifdef TRACE
  1976.   {
  1977.     (void) fprintf( logfile , "%s%ld%s%ld\n",  "Sorting " , (long)leftend , " through " , (long)rightend ) ; 
  1978.   } 
  1979. #endif /* TRACE */
  1980.   if ( ( rightend - leftend < 10 ) ) 
  1981.   {
  1982.     {register integer for_end; insertptr = leftend + 1 ; for_end = rightend 
  1983.     ; if ( insertptr <= for_end) do 
  1984.       {
  1985.     {register integer for_end; right = insertptr ; for_end = leftend + 1 
  1986.     ; if ( right >= for_end) do 
  1987.       {
  1988.         if ( ( lessthan ( citeinfo [ right - 1 ] , citeinfo [ right ] ) ) 
  1989.         ) 
  1990.         goto lab24 ; 
  1991.         swap ( right - 1 , right ) ; 
  1992.       } 
  1993.     while ( right-- > for_end ) ; } 
  1994.     lab24: ; 
  1995.       } 
  1996.     while ( insertptr++ < for_end ) ; } 
  1997.   } 
  1998.   else {
  1999.       
  2000.     {
  2001.       left = leftend + 4 ; 
  2002.       middle = ( leftend + rightend ) / 2 ; 
  2003.       right = rightend - 4 ; 
  2004.       if ( ( lessthan ( citeinfo [ left ] , citeinfo [ middle ] ) ) ) 
  2005.       if ( ( lessthan ( citeinfo [ middle ] , citeinfo [ right ] ) ) ) 
  2006.       swap ( leftend , middle ) ; 
  2007.       else if ( ( lessthan ( citeinfo [ left ] , citeinfo [ right ] ) ) ) 
  2008.       swap ( leftend , right ) ; 
  2009.       else swap ( leftend , left ) ; 
  2010.       else if ( ( lessthan ( citeinfo [ right ] , citeinfo [ middle ] ) ) ) 
  2011.       swap ( leftend , middle ) ; 
  2012.       else if ( ( lessthan ( citeinfo [ right ] , citeinfo [ left ] ) ) ) 
  2013.       swap ( leftend , right ) ; 
  2014.       else swap ( leftend , left ) ; 
  2015.     } 
  2016.     {
  2017.       partition = citeinfo [ leftend ] ; 
  2018.       left = leftend + 1 ; 
  2019.       right = rightend ; 
  2020.       do {
  2021.       while ( ( lessthan ( citeinfo [ left ] , partition ) ) ) incr ( 
  2022.     left ) ; 
  2023.     while ( ( lessthan ( partition , citeinfo [ right ] ) ) ) decr ( right 
  2024.     ) ; 
  2025.     if ( ( left < right ) ) 
  2026.     {
  2027.       swap ( left , right ) ; 
  2028.       incr ( left ) ; 
  2029.       decr ( right ) ; 
  2030.     } 
  2031.       } while ( ! ( ( left == right + 1 ) ) ) ; 
  2032.       swap ( leftend , right ) ; 
  2033.       quicksort ( leftend , right - 1 ) ; 
  2034.       quicksort ( left , rightend ) ; 
  2035.     } 
  2036.   } 
  2037. void zbuildin ( pds , len , fnhashloc , bltinnum ) 
  2038. pdstype pds ; 
  2039. pdslen len ; 
  2040. hashloc * fnhashloc ; 
  2041. bltinrange bltinnum ; 
  2042. {predefine ( pds , len , 11 ) ; 
  2043. *  fnhashloc = predefloc ; 
  2044.   fntype [ *fnhashloc ] = 0 ; 
  2045.   ilkinfo [ *fnhashloc ] = bltinnum ; 
  2046.     ;
  2047. #ifdef STAT
  2048.   bltinloc [ bltinnum ] = *fnhashloc ; 
  2049.   executioncount [ bltinnum ] = 0 ; 
  2050. #endif /* STAT */
  2051. void predefcertainstrings ( ) 
  2052. {predefine ( ".aux        " , 4 , 7 ) ; 
  2053.   sauxextension = hashtext [ predefloc ] ; 
  2054.   predefine ( ".bbl        " , 4 , 7 ) ; 
  2055.   sbblextension = hashtext [ predefloc ] ; 
  2056.   predefine ( ".blg        " , 4 , 7 ) ; 
  2057.   slogextension = hashtext [ predefloc ] ; 
  2058.   predefine ( ".bst        " , 4 , 7 ) ; 
  2059.   sbstextension = hashtext [ predefloc ] ; 
  2060.   predefine ( ".bib        " , 4 , 7 ) ; 
  2061.   sbibextension = hashtext [ predefloc ] ; 
  2062.   predefine ( "texinputs:  " , 10 , 8 ) ; 
  2063.   sbstarea = hashtext [ predefloc ] ; 
  2064.   predefine ( "texbib:     " , 7 , 8 ) ; 
  2065.   sbibarea = hashtext [ predefloc ] ; 
  2066.   predefine ( "\\citation   " , 9 , 2 ) ; 
  2067.   ilkinfo [ predefloc ] = 2 ; 
  2068.   predefine ( "\\bibdata    " , 8 , 2 ) ; 
  2069.   ilkinfo [ predefloc ] = 0 ; 
  2070.   predefine ( "\\bibstyle   " , 9 , 2 ) ; 
  2071.   ilkinfo [ predefloc ] = 1 ; 
  2072.   predefine ( "\\@input     " , 7 , 2 ) ; 
  2073.   ilkinfo [ predefloc ] = 3 ; 
  2074.   predefine ( "entry       " , 5 , 4 ) ; 
  2075.   ilkinfo [ predefloc ] = 0 ; 
  2076.   predefine ( "execute     " , 7 , 4 ) ; 
  2077.   ilkinfo [ predefloc ] = 1 ; 
  2078.   predefine ( "function    " , 8 , 4 ) ; 
  2079.   ilkinfo [ predefloc ] = 2 ; 
  2080.   predefine ( "integers    " , 8 , 4 ) ; 
  2081.   ilkinfo [ predefloc ] = 3 ; 
  2082.   predefine ( "iterate     " , 7 , 4 ) ; 
  2083.   ilkinfo [ predefloc ] = 4 ; 
  2084.   predefine ( "macro       " , 5 , 4 ) ; 
  2085.   ilkinfo [ predefloc ] = 5 ; 
  2086.   predefine ( "read        " , 4 , 4 ) ; 
  2087.   ilkinfo [ predefloc ] = 6 ; 
  2088.   predefine ( "reverse     " , 7 , 4 ) ; 
  2089.   ilkinfo [ predefloc ] = 7 ; 
  2090.   predefine ( "sort        " , 4 , 4 ) ; 
  2091.   ilkinfo [ predefloc ] = 8 ; 
  2092.   predefine ( "strings     " , 7 , 4 ) ; 
  2093.   ilkinfo [ predefloc ] = 9 ; 
  2094.   predefine ( "comment     " , 7 , 12 ) ; 
  2095.   ilkinfo [ predefloc ] = 0 ; 
  2096.   predefine ( "preamble    " , 8 , 12 ) ; 
  2097.   ilkinfo [ predefloc ] = 1 ; 
  2098.   predefine ( "string      " , 6 , 12 ) ; 
  2099.   ilkinfo [ predefloc ] = 2 ; 
  2100.   buildin ( "=           " , 1 , bequals , 0 ) ; 
  2101.   buildin ( ">           " , 1 , bgreaterthan , 1 ) ; 
  2102.   buildin ( "<           " , 1 , blessthan , 2 ) ; 
  2103.   buildin ( "+           " , 1 , bplus , 3 ) ; 
  2104.   buildin ( "-           " , 1 , bminus , 4 ) ; 
  2105.   buildin ( "*           " , 1 , bconcatenate , 5 ) ; 
  2106.   buildin ( ":=          " , 2 , bgets , 6 ) ; 
  2107.   buildin ( "add.period$ " , 11 , baddperiod , 7 ) ; 
  2108.   buildin ( "call.type$  " , 10 , bcalltype , 8 ) ; 
  2109.   buildin ( "change.case$" , 12 , bchangecase , 9 ) ; 
  2110.   buildin ( "chr.to.int$ " , 11 , bchrtoint , 10 ) ; 
  2111.   buildin ( "cite$       " , 5 , bcite , 11 ) ; 
  2112.   buildin ( "duplicate$  " , 10 , bduplicate , 12 ) ; 
  2113.   buildin ( "empty$      " , 6 , bempty , 13 ) ; 
  2114.   buildin ( "format.name$" , 12 , bformatname , 14 ) ; 
  2115.   buildin ( "if$         " , 3 , bif , 15 ) ; 
  2116.   buildin ( "int.to.chr$ " , 11 , binttochr , 16 ) ; 
  2117.   buildin ( "int.to.str$ " , 11 , binttostr , 17 ) ; 
  2118.   buildin ( "missing$    " , 8 , bmissing , 18 ) ; 
  2119.   buildin ( "newline$    " , 8 , bnewline , 19 ) ; 
  2120.   buildin ( "num.names$  " , 10 , bnumnames , 20 ) ; 
  2121.   buildin ( "pop$        " , 4 , bpop , 21 ) ; 
  2122.   buildin ( "preamble$   " , 9 , bpreamble , 22 ) ; 
  2123.   buildin ( "purify$     " , 7 , bpurify , 23 ) ; 
  2124.   buildin ( "quote$      " , 6 , bquote , 24 ) ; 
  2125.   buildin ( "skip$       " , 5 , bskip , 25 ) ; 
  2126.   buildin ( "stack$      " , 6 , bstack , 26 ) ; 
  2127.   buildin ( "substring$  " , 10 , bsubstring , 27 ) ; 
  2128.   buildin ( "swap$       " , 5 , bswap , 28 ) ; 
  2129.   buildin ( "text.length$" , 12 , btextlength , 29 ) ; 
  2130.   buildin ( "text.prefix$" , 12 , btextprefix , 30 ) ; 
  2131.   buildin ( "top$        " , 4 , btopstack , 31 ) ; 
  2132.   buildin ( "type$       " , 5 , btype , 32 ) ; 
  2133.   buildin ( "warning$    " , 8 , bwarning , 33 ) ; 
  2134.   buildin ( "width$      " , 6 , bwidth , 35 ) ; 
  2135.   buildin ( "while$      " , 6 , bwhile , 34 ) ; 
  2136.   buildin ( "width$      " , 6 , bwidth , 35 ) ; 
  2137.   buildin ( "write$      " , 6 , bwrite , 36 ) ; 
  2138.   predefine ( "            " , 0 , 0 ) ; 
  2139.   snull = hashtext [ predefloc ] ; 
  2140.   fntype [ predefloc ] = 3 ; 
  2141.   predefine ( "default.type" , 12 , 0 ) ; 
  2142.   sdefault = hashtext [ predefloc ] ; 
  2143.   fntype [ predefloc ] = 3 ; 
  2144.   bdefault = bskip ; 
  2145.   preambleptr = 0 ; 
  2146.   predefine ( "i           " , 1 , 14 ) ; 
  2147.   ilkinfo [ predefloc ] = 0 ; 
  2148.   predefine ( "j           " , 1 , 14 ) ; 
  2149.   ilkinfo [ predefloc ] = 1 ; 
  2150.   predefine ( "oe          " , 2 , 14 ) ; 
  2151.   ilkinfo [ predefloc ] = 2 ; 
  2152.   predefine ( "OE          " , 2 , 14 ) ; 
  2153.   ilkinfo [ predefloc ] = 3 ; 
  2154.   predefine ( "ae          " , 2 , 14 ) ; 
  2155.   ilkinfo [ predefloc ] = 4 ; 
  2156.   predefine ( "AE          " , 2 , 14 ) ; 
  2157.   ilkinfo [ predefloc ] = 5 ; 
  2158.   predefine ( "aa          " , 2 , 14 ) ; 
  2159.   ilkinfo [ predefloc ] = 6 ; 
  2160.   predefine ( "AA          " , 2 , 14 ) ; 
  2161.   ilkinfo [ predefloc ] = 7 ; 
  2162.   predefine ( "o           " , 1 , 14 ) ; 
  2163.   ilkinfo [ predefloc ] = 8 ; 
  2164.   predefine ( "O           " , 1 , 14 ) ; 
  2165.   ilkinfo [ predefloc ] = 9 ; 
  2166.   predefine ( "l           " , 1 , 14 ) ; 
  2167.   ilkinfo [ predefloc ] = 10 ; 
  2168.   predefine ( "L           " , 1 , 14 ) ; 
  2169.   ilkinfo [ predefloc ] = 11 ; 
  2170.   predefine ( "ss          " , 2 , 14 ) ; 
  2171.   ilkinfo [ predefloc ] = 12 ; 
  2172.   predefine ( "crossref    " , 8 , 11 ) ; 
  2173.   fntype [ predefloc ] = 4 ; 
  2174.   ilkinfo [ predefloc ] = numfields ; 
  2175.   crossrefnum = numfields ; 
  2176.   incr ( numfields ) ; 
  2177.   numpredefinedfields = numfields ; 
  2178.   predefine ( "sort.key$   " , 9 , 11 ) ; 
  2179.   fntype [ predefloc ] = 6 ; 
  2180.   ilkinfo [ predefloc ] = numentstrs ; 
  2181.   sortkeynum = numentstrs ; 
  2182.   incr ( numentstrs ) ; 
  2183.   predefine ( "entry.max$  " , 10 , 11 ) ; 
  2184.   fntype [ predefloc ] = 7 ; 
  2185.   ilkinfo [ predefloc ] = entstrsize ; 
  2186.   predefine ( "global.max$ " , 11 , 11 ) ; 
  2187.   fntype [ predefloc ] = 7 ; 
  2188.   ilkinfo [ predefloc ] = globstrsize ; 
  2189. boolean zscan1 ( char1 ) 
  2190. ASCIIcode char1 ; 
  2191. {register boolean Result; bufptr1 = bufptr2 ; 
  2192.   while ( ( ( buffer [ bufptr2 ] != char1 ) && ( bufptr2 < last ) ) ) incr ( 
  2193.   bufptr2 ) ; 
  2194.   if ( ( bufptr2 < last ) ) 
  2195.   Result = true ; 
  2196.   else Result = false ; 
  2197.   return(Result) ; 
  2198. boolean zscan1white ( char1 ) 
  2199. ASCIIcode char1 ; 
  2200. {register boolean Result; bufptr1 = bufptr2 ; 
  2201.   while ( ( ( lexclass [ buffer [ bufptr2 ] ] != 1 ) && ( buffer [ bufptr2 ] 
  2202.   != char1 ) && ( bufptr2 < last ) ) ) incr ( bufptr2 ) ; 
  2203.   if ( ( bufptr2 < last ) ) 
  2204.   Result = true ; 
  2205.   else Result = false ; 
  2206.   return(Result) ; 
  2207. boolean zscan2 ( char1 , char2 ) 
  2208. ASCIIcode char1 ; 
  2209. ASCIIcode char2 ; 
  2210. {register boolean Result; bufptr1 = bufptr2 ; 
  2211.   while ( ( ( buffer [ bufptr2 ] != char1 ) && ( buffer [ bufptr2 ] != char2 ) 
  2212.   && ( bufptr2 < last ) ) ) incr ( bufptr2 ) ; 
  2213.   if ( ( bufptr2 < last ) ) 
  2214.   Result = true ; 
  2215.   else Result = false ; 
  2216.   return(Result) ; 
  2217. boolean zscan2white ( char1 , char2 ) 
  2218. ASCIIcode char1 ; 
  2219. ASCIIcode char2 ; 
  2220. {register boolean Result; bufptr1 = bufptr2 ; 
  2221.   while ( ( ( buffer [ bufptr2 ] != char1 ) && ( buffer [ bufptr2 ] != char2 ) 
  2222.   && ( lexclass [ buffer [ bufptr2 ] ] != 1 ) && ( bufptr2 < last ) ) ) incr ( 
  2223.   bufptr2 ) ; 
  2224.   if ( ( bufptr2 < last ) ) 
  2225.   Result = true ; 
  2226.   else Result = false ; 
  2227.   return(Result) ; 
  2228. boolean zscan3 ( char1 , char2 , char3 ) 
  2229. ASCIIcode char1 ; 
  2230. ASCIIcode char2 ; 
  2231. ASCIIcode char3 ; 
  2232. {register boolean Result; bufptr1 = bufptr2 ; 
  2233.   while ( ( ( buffer [ bufptr2 ] != char1 ) && ( buffer [ bufptr2 ] != char2 ) 
  2234.   && ( buffer [ bufptr2 ] != char3 ) && ( bufptr2 < last ) ) ) incr ( bufptr2 
  2235.   ) ; 
  2236.   if ( ( bufptr2 < last ) ) 
  2237.   Result = true ; 
  2238.   else Result = false ; 
  2239.   return(Result) ; 
  2240. boolean scanalpha ( ) 
  2241. {register boolean Result; bufptr1 = bufptr2 ; 
  2242.   while ( ( ( lexclass [ buffer [ bufptr2 ] ] == 2 ) && ( bufptr2 < last ) ) ) 
  2243.   incr ( bufptr2 ) ; 
  2244.   if ( ( ( bufptr2 - bufptr1 ) == 0 ) ) 
  2245.   Result = false ; 
  2246.   else Result = true ; 
  2247.   return(Result) ; 
  2248. void zscanidentifier ( char1 , char2 , char3 ) 
  2249. ASCIIcode char1 ; 
  2250. ASCIIcode char2 ; 
  2251. ASCIIcode char3 ; 
  2252. {bufptr1 = bufptr2 ; 
  2253.   if ( ( lexclass [ buffer [ bufptr2 ] ] != 3 ) ) 
  2254.   while ( ( ( idclass [ buffer [ bufptr2 ] ] == 1 ) && ( bufptr2 < last ) ) ) 
  2255.   incr ( bufptr2 ) ; 
  2256.   if ( ( ( bufptr2 - bufptr1 ) == 0 ) ) 
  2257.   scanresult = 0 ; 
  2258.   else if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 == last ) 
  2259.   ) ) 
  2260.   scanresult = 3 ; 
  2261.   else if ( ( ( buffer [ bufptr2 ] == char1 ) || ( buffer [ bufptr2 ] == char2 
  2262.   ) || ( buffer [ bufptr2 ] == char3 ) ) ) 
  2263.   scanresult = 1 ; 
  2264.   else scanresult = 2 ; 
  2265. boolean scannonneginteger ( ) 
  2266. {register boolean Result; bufptr1 = bufptr2 ; 
  2267.   tokenvalue = 0 ; 
  2268.   while ( ( ( lexclass [ buffer [ bufptr2 ] ] == 3 ) && ( bufptr2 < last ) ) ) 
  2269.   {
  2270.     tokenvalue = tokenvalue * 10 + ( buffer [ bufptr2 ] - 48 ) ; 
  2271.     incr ( bufptr2 ) ; 
  2272.   } 
  2273.   if ( ( ( bufptr2 - bufptr1 ) == 0 ) ) 
  2274.   Result = false ; 
  2275.   else Result = true ; 
  2276.   return(Result) ; 
  2277. boolean scaninteger ( ) 
  2278. {register boolean Result; schar signlength  ; 
  2279.   bufptr1 = bufptr2 ; 
  2280.   if ( ( buffer [ bufptr2 ] == 45 ) ) 
  2281.   {
  2282.     signlength = 1 ; 
  2283.     incr ( bufptr2 ) ; 
  2284.   } 
  2285.   else signlength = 0 ; 
  2286.   tokenvalue = 0 ; 
  2287.   while ( ( ( lexclass [ buffer [ bufptr2 ] ] == 3 ) && ( bufptr2 < last ) ) ) 
  2288.   {
  2289.     tokenvalue = tokenvalue * 10 + ( buffer [ bufptr2 ] - 48 ) ; 
  2290.     incr ( bufptr2 ) ; 
  2291.   } 
  2292.   if ( ( ( signlength == 1 ) ) ) 
  2293.   tokenvalue = - (integer) tokenvalue ; 
  2294.   if ( ( ( bufptr2 - bufptr1 ) == signlength ) ) 
  2295.   Result = false ; 
  2296.   else Result = true ; 
  2297.   return(Result) ; 
  2298. boolean scanwhitespace ( ) 
  2299. {register boolean Result; while ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) 
  2300.   && ( bufptr2 < last ) ) ) incr ( bufptr2 ) ; 
  2301.   if ( ( bufptr2 < last ) ) 
  2302.   Result = true ; 
  2303.   else Result = false ; 
  2304.   return(Result) ; 
  2305. boolean eatbstwhitespace ( ) 
  2306. {/* 10 */ register boolean Result; while ( true ) {
  2307.     
  2308.     if ( ( scanwhitespace () ) ) 
  2309.     if ( ( buffer [ bufptr2 ] != 37 ) ) 
  2310.     {
  2311.       Result = true ; 
  2312.       goto lab10 ; 
  2313.     } 
  2314.     if ( ( ! inputln ( bstfile ) ) ) 
  2315.     {
  2316.       Result = false ; 
  2317.       goto lab10 ; 
  2318.     } 
  2319.     incr ( bstlinenum ) ; 
  2320.     bufptr2 = 0 ; 
  2321.   } 
  2322.   lab10: ; 
  2323.   return(Result) ; 
  2324. void skiptokenprint ( ) 
  2325. {{
  2326.     
  2327.     (void) putc( '-' ,  logfile );
  2328.     (void) putc( '-' ,  stdout );
  2329.   } 
  2330.   bstlnnumprint () ; 
  2331.   markerror () ; 
  2332.   if ( ( scan2white ( 125 , 37 ) ) ) 
  2333.   ; 
  2334. void printrecursionillega ( ) 
  2335. {
  2336.     ;
  2337. #ifdef TRACE
  2338.   {
  2339.     (void) putc('\n',  logfile );
  2340.   } 
  2341. #endif /* TRACE */
  2342.   {
  2343.     (void) fprintf( logfile , "%s\n",  "Curse you, wizard, before you recurse me:" ) ; 
  2344.     (void) fprintf( stdout , "%s\n",  "Curse you, wizard, before you recurse me:" ) ; 
  2345.   } 
  2346.   {
  2347.     (void) Fputs( logfile ,  "function " ) ; 
  2348.     (void) Fputs( stdout ,  "function " ) ; 
  2349.   } 
  2350.   printatoken () ; 
  2351.   {
  2352.     (void) fprintf( logfile , "%s\n",  " is illegal in its own definition" ) ; 
  2353.     (void) fprintf( stdout , "%s\n",  " is illegal in its own definition" ) ; 
  2354.   } 
  2355.   skiptokenprint () ; 
  2356. void skptokenunknownfunct ( ) 
  2357. {printatoken () ; 
  2358.   {
  2359.     (void) Fputs( logfile ,  " is an unknown function" ) ; 
  2360.     (void) Fputs( stdout ,  " is an unknown function" ) ; 
  2361.   } 
  2362.   skiptokenprint () ; 
  2363. void skipillegalstuffafte ( ) 
  2364. {{
  2365.     
  2366.     (void) fprintf( logfile , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" can't follow a literal" ) ; 
  2367.     (void) fprintf( stdout , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" can't follow a literal" ) ; 
  2368.   } 
  2369.   skiptokenprint () ; 
  2370. void zscanfndef ( fnhashloc ) 
  2371. hashloc fnhashloc ; 
  2372. {/* 25 10 */ typedef integer fndefloc  ; 
  2373.   hashptr2 singlfunction[singlefnspace + 1]  ; 
  2374.   fndefloc singleptr  ; 
  2375.   fndefloc copyptr  ; 
  2376.   bufpointer endofnum  ; 
  2377.   hashloc implfnloc  ; 
  2378.   {
  2379.     if ( ( ! eatbstwhitespace () ) ) 
  2380.     {
  2381.       eatbstprint () ; 
  2382.       {
  2383.     {
  2384.       (void) Fputs( logfile ,  "function" ) ; 
  2385.       (void) Fputs( stdout ,  "function" ) ; 
  2386.     } 
  2387.     {
  2388.       bsterrprintandlookfo () ; 
  2389.       goto lab10 ; 
  2390.     } 
  2391.       } 
  2392.     } 
  2393.   } 
  2394.   singleptr = 0 ; 
  2395.   while ( ( buffer [ bufptr2 ] != 125 ) ) {
  2396.       
  2397.     switch ( ( buffer [ bufptr2 ] ) ) 
  2398.     {case 35 : 
  2399.       {
  2400.     incr ( bufptr2 ) ; 
  2401.     if ( ( ! scaninteger () ) ) 
  2402.     {
  2403.       {
  2404.         (void) Fputs( logfile ,  "Illegal integer in integer literal" ) ; 
  2405.         (void) Fputs( stdout ,  "Illegal integer in integer literal" ) ; 
  2406.       } 
  2407.       skiptokenprint () ; 
  2408.       goto lab25 ; 
  2409.     } 
  2410.     ;
  2411. #ifdef TRACE
  2412.     {
  2413.       (void) putc( '#' ,  logfile );
  2414.     } 
  2415.     {
  2416.       outtoken ( logfile ) ; 
  2417.     } 
  2418.     {
  2419.       (void) fprintf( logfile , "%s%ld\n",  " is an integer literal with value " ,           (long)tokenvalue ) ; 
  2420.     } 
  2421. #endif /* TRACE */
  2422.     literalloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 1 
  2423.     , true ) ; 
  2424.     if ( ( ! hashfound ) ) 
  2425.     {
  2426.       fntype [ literalloc ] = 2 ; 
  2427.       ilkinfo [ literalloc ] = tokenvalue ; 
  2428.     } 
  2429.     if ( ( ( lexclass [ buffer [ bufptr2 ] ] != 1 ) && ( bufptr2 < last ) 
  2430.     && ( buffer [ bufptr2 ] != 125 ) && ( buffer [ bufptr2 ] != 37 ) ) ) 
  2431.     {
  2432.       skipillegalstuffafte () ; 
  2433.       goto lab25 ; 
  2434.     } 
  2435.     {
  2436.       singlfunction [ singleptr ] = literalloc ; 
  2437.       if ( ( singleptr == singlefnspace ) ) 
  2438.       singlfnoverflow () ; 
  2439.       incr ( singleptr ) ; 
  2440.     } 
  2441.       } 
  2442.       break ; 
  2443.     case 34 : 
  2444.       {
  2445.     incr ( bufptr2 ) ; 
  2446.     if ( ( ! scan1 ( 34 ) ) ) 
  2447.     {
  2448.       {
  2449.         (void) fprintf( logfile , "%s%c%s",  "No `" , xchr [ 34 ] , "' to end string literal"             ) ; 
  2450.         (void) fprintf( stdout , "%s%c%s",  "No `" , xchr [ 34 ] , "' to end string literal"             ) ; 
  2451.       } 
  2452.       skiptokenprint () ; 
  2453.       goto lab25 ; 
  2454.     } 
  2455.     ;
  2456. #ifdef TRACE
  2457.     {
  2458.       (void) putc( '"' ,  logfile );
  2459.     } 
  2460.     {
  2461.       outtoken ( logfile ) ; 
  2462.     } 
  2463.     {
  2464.       (void) putc( '"' ,  logfile );
  2465.     } 
  2466.     {
  2467.       (void) fprintf( logfile , "%s\n",  " is a string literal" ) ; 
  2468.     } 
  2469. #endif /* TRACE */
  2470.     literalloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 0 
  2471.     , true ) ; 
  2472.     fntype [ literalloc ] = 3 ; 
  2473.     incr ( bufptr2 ) ; 
  2474.     if ( ( ( lexclass [ buffer [ bufptr2 ] ] != 1 ) && ( bufptr2 < last ) 
  2475.     && ( buffer [ bufptr2 ] != 125 ) && ( buffer [ bufptr2 ] != 37 ) ) ) 
  2476.     {
  2477.       skipillegalstuffafte () ; 
  2478.       goto lab25 ; 
  2479.     } 
  2480.     {
  2481.       singlfunction [ singleptr ] = literalloc ; 
  2482.       if ( ( singleptr == singlefnspace ) ) 
  2483.       singlfnoverflow () ; 
  2484.       incr ( singleptr ) ; 
  2485.     } 
  2486.       } 
  2487.       break ; 
  2488.     case 39 : 
  2489.       {
  2490.     incr ( bufptr2 ) ; 
  2491.     if ( ( scan2white ( 125 , 37 ) ) ) 
  2492.     ; 
  2493.     ;
  2494. #ifdef TRACE
  2495.     {
  2496.       (void) putc( '\'' ,  logfile );
  2497.     } 
  2498.     {
  2499.       outtoken ( logfile ) ; 
  2500.     } 
  2501.     {
  2502.       (void) Fputs( logfile ,  " is a quoted function " ) ; 
  2503.     } 
  2504. #endif /* TRACE */
  2505.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  2506.     fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  2507.     false ) ; 
  2508.     if ( ( ! hashfound ) ) 
  2509.     {
  2510.       skptokenunknownfunct () ; 
  2511.       goto lab25 ; 
  2512.     } 
  2513.     else {
  2514.         
  2515.       if ( ( fnloc == wizloc ) ) 
  2516.       {
  2517.         printrecursionillega () ; 
  2518.         goto lab25 ; 
  2519.       } 
  2520.       else {
  2521.           
  2522.     ;
  2523. #ifdef TRACE
  2524.         {
  2525.           (void) Fputs( logfile ,  "of type " ) ; 
  2526.         } 
  2527.         traceprfnclass ( fnloc ) ; 
  2528.         {
  2529.           (void) putc('\n',  logfile );
  2530.         } 
  2531. #endif /* TRACE */
  2532.         {
  2533.           singlfunction [ singleptr ] = 0 ; 
  2534.           if ( ( singleptr == singlefnspace ) ) 
  2535.           singlfnoverflow () ; 
  2536.           incr ( singleptr ) ; 
  2537.         } 
  2538.         {
  2539.           singlfunction [ singleptr ] = fnloc ; 
  2540.           if ( ( singleptr == singlefnspace ) ) 
  2541.           singlfnoverflow () ; 
  2542.           incr ( singleptr ) ; 
  2543.         } 
  2544.       } 
  2545.     } 
  2546.       } 
  2547.       break ; 
  2548.     case 123 : 
  2549.       {
  2550.     exbuf [ 0 ] = 39 ; 
  2551.     inttoASCII ( implfnnum , exbuf , 1 , endofnum ) ; 
  2552.     implfnloc = strlookup ( exbuf , 0 , endofnum , 11 , true ) ; 
  2553.     if ( ( hashfound ) ) 
  2554.     {
  2555.       {
  2556.         (void) Fputs( logfile ,  "Already encountered implicit function" ) ; 
  2557.         (void) Fputs( stdout ,  "Already encountered implicit function" ) ; 
  2558.       } 
  2559.       printconfusion () ; 
  2560.       longjmp(jmp9998,1) ; 
  2561.     } 
  2562.     ;
  2563. #ifdef TRACE
  2564.     {
  2565.       outpoolstr ( logfile , hashtext [ implfnloc ] ) ; 
  2566.     } 
  2567.     {
  2568.       (void) fprintf( logfile , "%s\n",  " is an implicit function" ) ; 
  2569.     } 
  2570. #endif /* TRACE */
  2571.     incr ( implfnnum ) ; 
  2572.     fntype [ implfnloc ] = 1 ; 
  2573.     {
  2574.       singlfunction [ singleptr ] = 0 ; 
  2575.       if ( ( singleptr == singlefnspace ) ) 
  2576.       singlfnoverflow () ; 
  2577.       incr ( singleptr ) ; 
  2578.     } 
  2579.     {
  2580.       singlfunction [ singleptr ] = implfnloc ; 
  2581.       if ( ( singleptr == singlefnspace ) ) 
  2582.       singlfnoverflow () ; 
  2583.       incr ( singleptr ) ; 
  2584.     } 
  2585.     incr ( bufptr2 ) ; 
  2586.     scanfndef ( implfnloc ) ; 
  2587.       } 
  2588.       break ; 
  2589.       default: 
  2590.       {
  2591.     if ( ( scan2white ( 125 , 37 ) ) ) 
  2592.     ; 
  2593.     ;
  2594. #ifdef TRACE
  2595.     {
  2596.       outtoken ( logfile ) ; 
  2597.     } 
  2598.     {
  2599.       (void) Fputs( logfile ,  " is a function " ) ; 
  2600.     } 
  2601. #endif /* TRACE */
  2602.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  2603.     fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  2604.     false ) ; 
  2605.     if ( ( ! hashfound ) ) 
  2606.     {
  2607.       skptokenunknownfunct () ; 
  2608.       goto lab25 ; 
  2609.     } 
  2610.     else if ( ( fnloc == wizloc ) ) 
  2611.     {
  2612.       printrecursionillega () ; 
  2613.       goto lab25 ; 
  2614.     } 
  2615.     else {
  2616.         
  2617.     ;
  2618. #ifdef TRACE
  2619.       {
  2620.         (void) Fputs( logfile ,  "of type " ) ; 
  2621.       } 
  2622.       traceprfnclass ( fnloc ) ; 
  2623.       {
  2624.         (void) putc('\n',  logfile );
  2625.       } 
  2626. #endif /* TRACE */
  2627.       {
  2628.         singlfunction [ singleptr ] = fnloc ; 
  2629.         if ( ( singleptr == singlefnspace ) ) 
  2630.         singlfnoverflow () ; 
  2631.         incr ( singleptr ) ; 
  2632.       } 
  2633.     } 
  2634.       } 
  2635.       break ; 
  2636.     } 
  2637.     lab25: {
  2638.     
  2639.       if ( ( ! eatbstwhitespace () ) ) 
  2640.       {
  2641.     eatbstprint () ; 
  2642.     {
  2643.       {
  2644.         (void) Fputs( logfile ,  "function" ) ; 
  2645.         (void) Fputs( stdout ,  "function" ) ; 
  2646.       } 
  2647.       {
  2648.         bsterrprintandlookfo () ; 
  2649.         goto lab10 ; 
  2650.       } 
  2651.     } 
  2652.       } 
  2653.     } 
  2654.   } 
  2655.   {
  2656.     {
  2657.       singlfunction [ singleptr ] = 5001 ; 
  2658.       if ( ( singleptr == singlefnspace ) ) 
  2659.       singlfnoverflow () ; 
  2660.       incr ( singleptr ) ; 
  2661.     } 
  2662.     if ( ( singleptr + wizdefptr > wizfnspace ) ) 
  2663.     {
  2664.       {
  2665.     (void) fprintf( logfile , "%ld%s",  (long)singleptr + wizdefptr , ": " ) ; 
  2666.     (void) fprintf( stdout , "%ld%s",  (long)singleptr + wizdefptr , ": " ) ; 
  2667.       } 
  2668.       {
  2669.     printoverflow () ; 
  2670.     {
  2671.       (void) fprintf( logfile , "%s%ld\n",  "wizard-defined function space " , (long)wizfnspace ) 
  2672.       ; 
  2673.       (void) fprintf( stdout , "%s%ld\n",  "wizard-defined function space " , (long)wizfnspace ) ; 
  2674.     } 
  2675.     longjmp(jmp9998,1) ; 
  2676.       } 
  2677.     } 
  2678.     ilkinfo [ fnhashloc ] = wizdefptr ; 
  2679.     copyptr = 0 ; 
  2680.     while ( ( copyptr < singleptr ) ) {
  2681.     
  2682.       wizfunctions [ wizdefptr ] = singlfunction [ copyptr ] ; 
  2683.       incr ( copyptr ) ; 
  2684.       incr ( wizdefptr ) ; 
  2685.     } 
  2686.   } 
  2687.   incr ( bufptr2 ) ; 
  2688.   lab10: ; 
  2689. boolean eatbibwhitespace ( ) 
  2690. {/* 10 */ register boolean Result; while ( ( ! scanwhitespace () ) ) {
  2691.     
  2692.     if ( ( ! inputln ( bibfile [ bibptr ] ) ) ) 
  2693.     {
  2694.       Result = false ; 
  2695.       goto lab10 ; 
  2696.     } 
  2697.     incr ( biblinenum ) ; 
  2698.     bufptr2 = 0 ; 
  2699.   } 
  2700.   Result = true ; 
  2701.   lab10: ; 
  2702.   return(Result) ; 
  2703. boolean compressbibwhite ( ) 
  2704. {/* 10 */ register boolean Result; Result = false ; 
  2705.   {
  2706.     if ( ( exbufptr == bufsize ) ) 
  2707.     {
  2708.       bibfieldtoolongprint () ; 
  2709.       goto lab10 ; 
  2710.     } 
  2711.     else {
  2712.     
  2713.       exbuf [ exbufptr ] = 32 ; 
  2714.       incr ( exbufptr ) ; 
  2715.     } 
  2716.   } 
  2717.   while ( ( ! scanwhitespace () ) ) {
  2718.       
  2719.     if ( ( ! inputln ( bibfile [ bibptr ] ) ) ) 
  2720.     {
  2721.       eatbibprint () ; 
  2722.       goto lab10 ; 
  2723.     } 
  2724.     incr ( biblinenum ) ; 
  2725.     bufptr2 = 0 ; 
  2726.   } 
  2727.   Result = true ; 
  2728.   lab10: ; 
  2729.   return(Result) ; 
  2730. boolean scanbalancedbraces ( ) 
  2731. {/* 15 10 */ register boolean Result; Result = false ; 
  2732.   incr ( bufptr2 ) ; 
  2733.   {
  2734.     if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 == last ) ) ) 
  2735.     if ( ( ! compressbibwhite () ) ) 
  2736.     goto lab10 ; 
  2737.   } 
  2738.   if ( ( exbufptr > 1 ) ) 
  2739.   if ( ( exbuf [ exbufptr - 1 ] == 32 ) ) 
  2740.   if ( ( exbuf [ exbufptr - 2 ] == 32 ) ) 
  2741.   decr ( exbufptr ) ; 
  2742.   bibbracelevel = 0 ; 
  2743.   if ( ( storefield ) ) 
  2744.   {
  2745.     while ( ( buffer [ bufptr2 ] != rightstrdelim ) ) switch ( ( buffer [ 
  2746.     bufptr2 ] ) ) 
  2747.     {case 123 : 
  2748.       {
  2749.     incr ( bibbracelevel ) ; 
  2750.     {
  2751.       if ( ( exbufptr == bufsize ) ) 
  2752.       {
  2753.         bibfieldtoolongprint () ; 
  2754.         goto lab10 ; 
  2755.       } 
  2756.       else {
  2757.           
  2758.         exbuf [ exbufptr ] = 123 ; 
  2759.         incr ( exbufptr ) ; 
  2760.       } 
  2761.     } 
  2762.     incr ( bufptr2 ) ; 
  2763.     {
  2764.       if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 == last 
  2765.       ) ) ) 
  2766.       if ( ( ! compressbibwhite () ) ) 
  2767.       goto lab10 ; 
  2768.     } 
  2769.     {
  2770.       while ( true ) switch ( ( buffer [ bufptr2 ] ) ) 
  2771.       {case 125 : 
  2772.         {
  2773.           decr ( bibbracelevel ) ; 
  2774.           {
  2775.         if ( ( exbufptr == bufsize ) ) 
  2776.         {
  2777.           bibfieldtoolongprint () ; 
  2778.           goto lab10 ; 
  2779.         } 
  2780.         else {
  2781.             
  2782.           exbuf [ exbufptr ] = 125 ; 
  2783.           incr ( exbufptr ) ; 
  2784.         } 
  2785.           } 
  2786.           incr ( bufptr2 ) ; 
  2787.           {
  2788.         if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 
  2789.         == last ) ) ) 
  2790.         if ( ( ! compressbibwhite () ) ) 
  2791.         goto lab10 ; 
  2792.           } 
  2793.           if ( ( bibbracelevel == 0 ) ) 
  2794.           goto lab15 ; 
  2795.         } 
  2796.         break ; 
  2797.       case 123 : 
  2798.         {
  2799.           incr ( bibbracelevel ) ; 
  2800.           {
  2801.         if ( ( exbufptr == bufsize ) ) 
  2802.         {
  2803.           bibfieldtoolongprint () ; 
  2804.           goto lab10 ; 
  2805.         } 
  2806.         else {
  2807.             
  2808.           exbuf [ exbufptr ] = 123 ; 
  2809.           incr ( exbufptr ) ; 
  2810.         } 
  2811.           } 
  2812.           incr ( bufptr2 ) ; 
  2813.           {
  2814.         if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 
  2815.         == last ) ) ) 
  2816.         if ( ( ! compressbibwhite () ) ) 
  2817.         goto lab10 ; 
  2818.           } 
  2819.         } 
  2820.         break ; 
  2821.         default: 
  2822.         {
  2823.           {
  2824.         if ( ( exbufptr == bufsize ) ) 
  2825.         {
  2826.           bibfieldtoolongprint () ; 
  2827.           goto lab10 ; 
  2828.         } 
  2829.         else {
  2830.             
  2831.           exbuf [ exbufptr ] = buffer [ bufptr2 ] ; 
  2832.           incr ( exbufptr ) ; 
  2833.         } 
  2834.           } 
  2835.           incr ( bufptr2 ) ; 
  2836.           {
  2837.         if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 
  2838.         == last ) ) ) 
  2839.         if ( ( ! compressbibwhite () ) ) 
  2840.         goto lab10 ; 
  2841.           } 
  2842.         } 
  2843.         break ; 
  2844.       } 
  2845.       lab15: ; 
  2846.     } 
  2847.       } 
  2848.       break ; 
  2849.     case 125 : 
  2850.       {
  2851.     bibunbalancedbracesp () ; 
  2852.     goto lab10 ; 
  2853.       } 
  2854.       break ; 
  2855.       default: 
  2856.       {
  2857.     {
  2858.       if ( ( exbufptr == bufsize ) ) 
  2859.       {
  2860.         bibfieldtoolongprint () ; 
  2861.         goto lab10 ; 
  2862.       } 
  2863.       else {
  2864.           
  2865.         exbuf [ exbufptr ] = buffer [ bufptr2 ] ; 
  2866.         incr ( exbufptr ) ; 
  2867.       } 
  2868.     } 
  2869.     incr ( bufptr2 ) ; 
  2870.     {
  2871.       if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 == last 
  2872.       ) ) ) 
  2873.       if ( ( ! compressbibwhite () ) ) 
  2874.       goto lab10 ; 
  2875.     } 
  2876.       } 
  2877.       break ; 
  2878.     } 
  2879.   } 
  2880.   else {
  2881.       
  2882.     while ( ( buffer [ bufptr2 ] != rightstrdelim ) ) if ( ( buffer [ bufptr2 
  2883.     ] == 123 ) ) 
  2884.     {
  2885.       incr ( bibbracelevel ) ; 
  2886.       incr ( bufptr2 ) ; 
  2887.       {
  2888.     if ( ( ! eatbibwhitespace () ) ) 
  2889.     {
  2890.       eatbibprint () ; 
  2891.       goto lab10 ; 
  2892.     } 
  2893.       } 
  2894.       while ( ( bibbracelevel > 0 ) ) {
  2895.       
  2896.     if ( ( buffer [ bufptr2 ] == 125 ) ) 
  2897.     {
  2898.       decr ( bibbracelevel ) ; 
  2899.       incr ( bufptr2 ) ; 
  2900.       {
  2901.         if ( ( ! eatbibwhitespace () ) ) 
  2902.         {
  2903.           eatbibprint () ; 
  2904.           goto lab10 ; 
  2905.         } 
  2906.       } 
  2907.     } 
  2908.     else if ( ( buffer [ bufptr2 ] == 123 ) ) 
  2909.     {
  2910.       incr ( bibbracelevel ) ; 
  2911.       incr ( bufptr2 ) ; 
  2912.       {
  2913.         if ( ( ! eatbibwhitespace () ) ) 
  2914.         {
  2915.           eatbibprint () ; 
  2916.           goto lab10 ; 
  2917.         } 
  2918.       } 
  2919.     } 
  2920.     else {
  2921.         
  2922.       incr ( bufptr2 ) ; 
  2923.       if ( ( ! scan2 ( 125 , 123 ) ) ) 
  2924.       {
  2925.         if ( ( ! eatbibwhitespace () ) ) 
  2926.         {
  2927.           eatbibprint () ; 
  2928.           goto lab10 ; 
  2929.         } 
  2930.       } 
  2931.     } 
  2932.       } 
  2933.     } 
  2934.     else if ( ( buffer [ bufptr2 ] == 125 ) ) 
  2935.     {
  2936.       bibunbalancedbracesp () ; 
  2937.       goto lab10 ; 
  2938.     } 
  2939.     else {
  2940.     
  2941.       incr ( bufptr2 ) ; 
  2942.       if ( ( ! scan3 ( rightstrdelim , 123 , 125 ) ) ) 
  2943.       {
  2944.     if ( ( ! eatbibwhitespace () ) ) 
  2945.     {
  2946.       eatbibprint () ; 
  2947.       goto lab10 ; 
  2948.     } 
  2949.       } 
  2950.     } 
  2951.   } 
  2952.   incr ( bufptr2 ) ; 
  2953.   Result = true ; 
  2954.   lab10: ; 
  2955.   return(Result) ; 
  2956. boolean scanafieldtokenandea ( ) 
  2957. {/* 10 */ register boolean Result; Result = false ; 
  2958.   switch ( ( buffer [ bufptr2 ] ) ) 
  2959.   {case 123 : 
  2960.     {
  2961.       rightstrdelim = 125 ; 
  2962.       if ( ( ! scanbalancedbraces () ) ) 
  2963.       goto lab10 ; 
  2964.     } 
  2965.     break ; 
  2966.   case 34 : 
  2967.     {
  2968.       rightstrdelim = 34 ; 
  2969.       if ( ( ! scanbalancedbraces () ) ) 
  2970.       goto lab10 ; 
  2971.     } 
  2972.     break ; 
  2973.   case 48 : 
  2974.   case 49 : 
  2975.   case 50 : 
  2976.   case 51 : 
  2977.   case 52 : 
  2978.   case 53 : 
  2979.   case 54 : 
  2980.   case 55 : 
  2981.   case 56 : 
  2982.   case 57 : 
  2983.     {
  2984.       if ( ( ! scannonneginteger () ) ) 
  2985.       {
  2986.     {
  2987.       (void) Fputs( logfile ,  "A digit disappeared" ) ; 
  2988.       (void) Fputs( stdout ,  "A digit disappeared" ) ; 
  2989.     } 
  2990.     printconfusion () ; 
  2991.     longjmp(jmp9998,1) ; 
  2992.       } 
  2993.       if ( ( storefield ) ) 
  2994.       {
  2995.     tmpptr = bufptr1 ; 
  2996.     while ( ( tmpptr < bufptr2 ) ) {
  2997.         
  2998.       {
  2999.         if ( ( exbufptr == bufsize ) ) 
  3000.         {
  3001.           bibfieldtoolongprint () ; 
  3002.           goto lab10 ; 
  3003.         } 
  3004.         else {
  3005.         
  3006.           exbuf [ exbufptr ] = buffer [ tmpptr ] ; 
  3007.           incr ( exbufptr ) ; 
  3008.         } 
  3009.       } 
  3010.       incr ( tmpptr ) ; 
  3011.     } 
  3012.       } 
  3013.     } 
  3014.     break ; 
  3015.     default: 
  3016.     {
  3017.       scanidentifier ( 44 , rightouterdelim , 35 ) ; 
  3018.       {
  3019.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  3020.     ; 
  3021.     else {
  3022.         
  3023.       bibidprint () ; 
  3024.       {
  3025.         {
  3026.           (void) Fputs( logfile ,  "a field part" ) ; 
  3027.           (void) Fputs( stdout ,  "a field part" ) ; 
  3028.         } 
  3029.         biberrprint () ; 
  3030.         goto lab10 ; 
  3031.       } 
  3032.     } 
  3033.       } 
  3034.       if ( ( storefield ) ) 
  3035.       {
  3036.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  3037.     macronameloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 
  3038.     13 , false ) ; 
  3039.     storetoken = true ; 
  3040.     if ( ( atbibcommand ) ) 
  3041.     if ( ( commandnum == 2 ) ) 
  3042.     if ( ( macronameloc == curmacroloc ) ) 
  3043.     {
  3044.       storetoken = false ; 
  3045.       {
  3046.         macrowarnprint () ; 
  3047.         {
  3048.           {
  3049.         (void) fprintf( logfile , "%s\n",  "used in its own definition" ) ; 
  3050.         (void) fprintf( stdout , "%s\n",  "used in its own definition" ) ; 
  3051.           } 
  3052.           bibwarnprint () ; 
  3053.         } 
  3054.       } 
  3055.     } 
  3056.     if ( ( ! hashfound ) ) 
  3057.     {
  3058.       storetoken = false ; 
  3059.       {
  3060.         macrowarnprint () ; 
  3061.         {
  3062.           {
  3063.         (void) fprintf( logfile , "%s\n",  "undefined" ) ; 
  3064.         (void) fprintf( stdout , "%s\n",  "undefined" ) ; 
  3065.           } 
  3066.           bibwarnprint () ; 
  3067.         } 
  3068.       } 
  3069.     } 
  3070.     if ( ( storetoken ) ) 
  3071.     {
  3072.       tmpptr = strstart [ ilkinfo [ macronameloc ] ] ; 
  3073.       tmpendptr = strstart [ ilkinfo [ macronameloc ] + 1 ] ; 
  3074.       if ( ( exbufptr == 0 ) ) 
  3075.       if ( ( ( lexclass [ strpool [ tmpptr ] ] == 1 ) && ( tmpptr < 
  3076.       tmpendptr ) ) ) 
  3077.       {
  3078.         {
  3079.           if ( ( exbufptr == bufsize ) ) 
  3080.           {
  3081.         bibfieldtoolongprint () ; 
  3082.         goto lab10 ; 
  3083.           } 
  3084.           else {
  3085.           
  3086.         exbuf [ exbufptr ] = 32 ; 
  3087.         incr ( exbufptr ) ; 
  3088.           } 
  3089.         } 
  3090.         incr ( tmpptr ) ; 
  3091.         while ( ( ( lexclass [ strpool [ tmpptr ] ] == 1 ) && ( tmpptr < 
  3092.         tmpendptr ) ) ) incr ( tmpptr ) ; 
  3093.       } 
  3094.       while ( ( tmpptr < tmpendptr ) ) {
  3095.           
  3096.         if ( ( lexclass [ strpool [ tmpptr ] ] != 1 ) ) 
  3097.         {
  3098.           if ( ( exbufptr == bufsize ) ) 
  3099.           {
  3100.         bibfieldtoolongprint () ; 
  3101.         goto lab10 ; 
  3102.           } 
  3103.           else {
  3104.           
  3105.         exbuf [ exbufptr ] = strpool [ tmpptr ] ; 
  3106.         incr ( exbufptr ) ; 
  3107.           } 
  3108.         } 
  3109.         else if ( ( exbuf [ exbufptr - 1 ] != 32 ) ) 
  3110.         {
  3111.           if ( ( exbufptr == bufsize ) ) 
  3112.           {
  3113.         bibfieldtoolongprint () ; 
  3114.         goto lab10 ; 
  3115.           } 
  3116.           else {
  3117.           
  3118.         exbuf [ exbufptr ] = 32 ; 
  3119.         incr ( exbufptr ) ; 
  3120.           } 
  3121.         } 
  3122.         incr ( tmpptr ) ; 
  3123.       } 
  3124.     } 
  3125.       } 
  3126.     } 
  3127.     break ; 
  3128.   } 
  3129.   {
  3130.     if ( ( ! eatbibwhitespace () ) ) 
  3131.     {
  3132.       eatbibprint () ; 
  3133.       goto lab10 ; 
  3134.     } 
  3135.   } 
  3136.   Result = true ; 
  3137.   lab10: ; 
  3138.   return(Result) ; 
  3139. boolean scanandstorethefield ( ) 
  3140. {/* 10 */ register boolean Result; Result = false ; 
  3141.   exbufptr = 0 ; 
  3142.   if ( ( ! scanafieldtokenandea () ) ) 
  3143.   goto lab10 ; 
  3144.   while ( ( buffer [ bufptr2 ] == 35 ) ) {
  3145.       
  3146.     incr ( bufptr2 ) ; 
  3147.     {
  3148.       if ( ( ! eatbibwhitespace () ) ) 
  3149.       {
  3150.     eatbibprint () ; 
  3151.     goto lab10 ; 
  3152.       } 
  3153.     } 
  3154.     if ( ( ! scanafieldtokenandea () ) ) 
  3155.     goto lab10 ; 
  3156.   } 
  3157.   if ( ( storefield ) ) 
  3158.   {
  3159.     if ( ( ! atbibcommand ) ) 
  3160.     if ( ( exbufptr > 0 ) ) 
  3161.     if ( ( exbuf [ exbufptr - 1 ] == 32 ) ) 
  3162.     decr ( exbufptr ) ; 
  3163.     if ( ( ( ! atbibcommand ) && ( exbuf [ 0 ] == 32 ) && ( exbufptr > 0 ) ) ) 
  3164.     exbufxptr = 1 ; 
  3165.     else exbufxptr = 0 ; 
  3166.     fieldvalloc = strlookup ( exbuf , exbufxptr , exbufptr - exbufxptr , 0 , 
  3167.     true ) ; 
  3168.     fntype [ fieldvalloc ] = 3 ; 
  3169.     ;
  3170. #ifdef TRACE
  3171.     {
  3172.       (void) putc( '"' ,  logfile );
  3173.     } 
  3174.     {
  3175.       outpoolstr ( logfile , hashtext [ fieldvalloc ] ) ; 
  3176.     } 
  3177.     {
  3178.       (void) fprintf( logfile , "%s\n",  "\" is a field value" ) ; 
  3179.     } 
  3180. #endif /* TRACE */
  3181.     if ( ( atbibcommand ) ) 
  3182.     {
  3183.       switch ( ( commandnum ) ) 
  3184.       {case 1 : 
  3185.     {
  3186.       spreamble [ preambleptr ] = hashtext [ fieldvalloc ] ; 
  3187.       incr ( preambleptr ) ; 
  3188.     } 
  3189.     break ; 
  3190.       case 2 : 
  3191.     ilkinfo [ curmacroloc ] = hashtext [ fieldvalloc ] ; 
  3192.     break ; 
  3193.     default: 
  3194.     bibcmdconfusion () ; 
  3195.     break ; 
  3196.       } 
  3197.     } 
  3198.     else {
  3199.     
  3200.       fieldptr = entryciteptr * numfields + ilkinfo [ fieldnameloc ] ; 
  3201.       if ( ( fieldinfo [ fieldptr ] != 0 ) ) 
  3202.       {
  3203.     {
  3204.       (void) Fputs( logfile ,  "Warning--I'm ignoring " ) ; 
  3205.       (void) Fputs( stdout ,  "Warning--I'm ignoring " ) ; 
  3206.     } 
  3207.     printapoolstr ( citelist [ entryciteptr ] ) ; 
  3208.     {
  3209.       (void) Fputs( logfile ,  "'s extra \"" ) ; 
  3210.       (void) Fputs( stdout ,  "'s extra \"" ) ; 
  3211.     } 
  3212.     printapoolstr ( hashtext [ fieldnameloc ] ) ; 
  3213.     {
  3214.       {
  3215.         (void) fprintf( logfile , "%s\n",  "\" field" ) ; 
  3216.         (void) fprintf( stdout , "%s\n",  "\" field" ) ; 
  3217.       } 
  3218.       bibwarnprint () ; 
  3219.     } 
  3220.       } 
  3221.       else {
  3222.       
  3223.     fieldinfo [ fieldptr ] = hashtext [ fieldvalloc ] ; 
  3224.     if ( ( ( ilkinfo [ fieldnameloc ] == crossrefnum ) && ( ! allentries ) 
  3225.     ) ) 
  3226.     {
  3227.       tmpptr = exbufxptr ; 
  3228.       while ( ( tmpptr < exbufptr ) ) {
  3229.           
  3230.         outbuf [ tmpptr ] = exbuf [ tmpptr ] ; 
  3231.         incr ( tmpptr ) ; 
  3232.       } 
  3233.       lowercase ( outbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  3234.       lcciteloc = strlookup ( outbuf , exbufxptr , exbufptr - exbufxptr , 
  3235.       10 , true ) ; 
  3236.       if ( ( hashfound ) ) 
  3237.       {
  3238.         citeloc = ilkinfo [ lcciteloc ] ; 
  3239.         if ( ( ilkinfo [ citeloc ] >= oldnumcites ) ) 
  3240.         incr ( citeinfo [ ilkinfo [ citeloc ] ] ) ; 
  3241.       } 
  3242.       else {
  3243.           
  3244.         citeloc = strlookup ( exbuf , exbufxptr , exbufptr - exbufxptr , 9 
  3245.         , true ) ; 
  3246.         if ( ( hashfound ) ) 
  3247.         hashciteconfusion () ; 
  3248.         adddatabasecite ( citeptr ) ; 
  3249.         citeinfo [ ilkinfo [ citeloc ] ] = 1 ; 
  3250.       } 
  3251.     } 
  3252.       } 
  3253.     } 
  3254.   } 
  3255.   Result = true ; 
  3256.   lab10: ; 
  3257.   return(Result) ; 
  3258. void zdecrbracelevel ( poplitvar ) 
  3259. strnumber poplitvar ; 
  3260. {if ( ( bracelevel == 0 ) ) 
  3261.   bracesunbalancedcomp ( poplitvar ) ; 
  3262.   else decr ( bracelevel ) ; 
  3263. void zcheckbracelevel ( poplitvar ) 
  3264. strnumber poplitvar ; 
  3265. {if ( ( bracelevel > 0 ) ) 
  3266.   bracesunbalancedcomp ( poplitvar ) ; 
  3267. void znamescanforand ( poplitvar ) 
  3268. strnumber poplitvar ; 
  3269. {bracelevel = 0 ; 
  3270.   precedingwhite = false ; 
  3271.   andfound = false ; 
  3272.   while ( ( ( ! andfound ) && ( exbufptr < exbuflength ) ) ) switch ( ( exbuf 
  3273.   [ exbufptr ] ) ) 
  3274.   {case 97 : 
  3275.   case 65 : 
  3276.     {
  3277.       incr ( exbufptr ) ; 
  3278.       if ( ( precedingwhite ) ) 
  3279.       {
  3280.     if ( ( exbufptr <= ( exbuflength - 3 ) ) ) 
  3281.     if ( ( ( exbuf [ exbufptr ] == 110 ) || ( exbuf [ exbufptr ] == 78 ) ) 
  3282.     ) 
  3283.     if ( ( ( exbuf [ exbufptr + 1 ] == 100 ) || ( exbuf [ exbufptr + 1 ] 
  3284.     == 68 ) ) ) 
  3285.     if ( ( lexclass [ exbuf [ exbufptr + 2 ] ] == 1 ) ) 
  3286.     {
  3287.       exbufptr = exbufptr + 2 ; 
  3288.       andfound = true ; 
  3289.     } 
  3290.       } 
  3291.       precedingwhite = false ; 
  3292.     } 
  3293.     break ; 
  3294.   case 123 : 
  3295.     {
  3296.       incr ( bracelevel ) ; 
  3297.       incr ( exbufptr ) ; 
  3298.       while ( ( ( bracelevel > 0 ) && ( exbufptr < exbuflength ) ) ) {
  3299.       
  3300.     if ( ( exbuf [ exbufptr ] == 125 ) ) 
  3301.     decr ( bracelevel ) ; 
  3302.     else if ( ( exbuf [ exbufptr ] == 123 ) ) 
  3303.     incr ( bracelevel ) ; 
  3304.     incr ( exbufptr ) ; 
  3305.       } 
  3306.       precedingwhite = false ; 
  3307.     } 
  3308.     break ; 
  3309.   case 125 : 
  3310.     {
  3311.       decrbracelevel ( poplitvar ) ; 
  3312.       incr ( exbufptr ) ; 
  3313.       precedingwhite = false ; 
  3314.     } 
  3315.     break ; 
  3316.     default: 
  3317.     if ( ( lexclass [ exbuf [ exbufptr ] ] == 1 ) ) 
  3318.     {
  3319.       incr ( exbufptr ) ; 
  3320.       precedingwhite = true ; 
  3321.     } 
  3322.     else {
  3323.     
  3324.       incr ( exbufptr ) ; 
  3325.       precedingwhite = false ; 
  3326.     } 
  3327.     break ; 
  3328.   } 
  3329.   checkbracelevel ( poplitvar ) ; 
  3330. boolean vontokenfound ( ) 
  3331. {/* 10 */ register boolean Result; nmbracelevel = 0 ; 
  3332.   Result = false ; 
  3333.   while ( ( namebfptr < namebfxptr ) ) if ( ( ( svbuffer [ namebfptr ] >= 65 ) 
  3334.   && ( svbuffer [ namebfptr ] <= 90 ) ) ) 
  3335.   goto lab10 ; 
  3336.   else if ( ( ( svbuffer [ namebfptr ] >= 97 ) && ( svbuffer [ namebfptr ] <= 
  3337.   122 ) ) ) 
  3338.   {
  3339.     Result = true ; 
  3340.     goto lab10 ; 
  3341.   } 
  3342.   else if ( ( svbuffer [ namebfptr ] == 123 ) ) 
  3343.   {
  3344.     incr ( nmbracelevel ) ; 
  3345.     incr ( namebfptr ) ; 
  3346.     if ( ( ( namebfptr + 2 < namebfxptr ) && ( svbuffer [ namebfptr ] == 92 ) 
  3347.     ) ) 
  3348.     {
  3349.       incr ( namebfptr ) ; 
  3350.       namebfyptr = namebfptr ; 
  3351.       while ( ( ( namebfptr < namebfxptr ) && ( lexclass [ svbuffer [ 
  3352.       namebfptr ] ] == 2 ) ) ) incr ( namebfptr ) ; 
  3353.       controlseqloc = strlookup ( svbuffer , namebfyptr , namebfptr - 
  3354.       namebfyptr , 14 , false ) ; 
  3355.       if ( ( hashfound ) ) 
  3356.       {
  3357.     switch ( ( ilkinfo [ controlseqloc ] ) ) 
  3358.     {case 3 : 
  3359.     case 5 : 
  3360.     case 7 : 
  3361.     case 9 : 
  3362.     case 11 : 
  3363.       goto lab10 ; 
  3364.       break ; 
  3365.     case 0 : 
  3366.     case 1 : 
  3367.     case 2 : 
  3368.     case 4 : 
  3369.     case 6 : 
  3370.     case 8 : 
  3371.     case 10 : 
  3372.     case 12 : 
  3373.       {
  3374.         Result = true ; 
  3375.         goto lab10 ; 
  3376.       } 
  3377.       break ; 
  3378.       default: 
  3379.       {
  3380.         {
  3381.           (void) Fputs( logfile ,  "Control-sequence hash error" ) ; 
  3382.           (void) Fputs( stdout ,  "Control-sequence hash error" ) ; 
  3383.         } 
  3384.         printconfusion () ; 
  3385.         longjmp(jmp9998,1) ; 
  3386.       } 
  3387.       break ; 
  3388.     } 
  3389.       } 
  3390.       while ( ( ( namebfptr < namebfxptr ) && ( nmbracelevel > 0 ) ) ) {
  3391.       
  3392.     if ( ( ( svbuffer [ namebfptr ] >= 65 ) && ( svbuffer [ namebfptr ] <= 
  3393.     90 ) ) ) 
  3394.     goto lab10 ; 
  3395.     else if ( ( ( svbuffer [ namebfptr ] >= 97 ) && ( svbuffer [ namebfptr 
  3396.     ] <= 122 ) ) ) 
  3397.     {
  3398.       Result = true ; 
  3399.       goto lab10 ; 
  3400.     } 
  3401.     else if ( ( svbuffer [ namebfptr ] == 125 ) ) 
  3402.     decr ( nmbracelevel ) ; 
  3403.     else if ( ( svbuffer [ namebfptr ] == 123 ) ) 
  3404.     incr ( nmbracelevel ) ; 
  3405.     incr ( namebfptr ) ; 
  3406.       } 
  3407.       goto lab10 ; 
  3408.     } 
  3409.     else while ( ( ( nmbracelevel > 0 ) && ( namebfptr < namebfxptr ) ) ) {
  3410.     
  3411.       if ( ( svbuffer [ namebfptr ] == 125 ) ) 
  3412.       decr ( nmbracelevel ) ; 
  3413.       else if ( ( svbuffer [ namebfptr ] == 123 ) ) 
  3414.       incr ( nmbracelevel ) ; 
  3415.       incr ( namebfptr ) ; 
  3416.     } 
  3417.   } 
  3418.   else incr ( namebfptr ) ; 
  3419.   lab10: ; 
  3420.   return(Result) ; 
  3421. void vonnameendsandlastna ( ) 
  3422. {/* 10 */ vonend = lastend - 1 ; 
  3423.   while ( ( vonend > vonstart ) ) {
  3424.       
  3425.     namebfptr = nametok [ vonend - 1 ] ; 
  3426.     namebfxptr = nametok [ vonend ] ; 
  3427.     if ( ( vontokenfound () ) ) 
  3428.     goto lab10 ; 
  3429.     decr ( vonend ) ; 
  3430.   } 
  3431.   lab10: ; 
  3432. void skipstuffatspbracele ( ) 
  3433. {while ( ( ( spbracelevel > 1 ) && ( spptr < spend ) ) ) {
  3434.     
  3435.     if ( ( strpool [ spptr ] == 125 ) ) 
  3436.     decr ( spbracelevel ) ; 
  3437.     else if ( ( strpool [ spptr ] == 123 ) ) 
  3438.     incr ( spbracelevel ) ; 
  3439.     incr ( spptr ) ; 
  3440.   } 
  3441. void bracelvlonelettersco ( ) 
  3442. {{
  3443.     
  3444.     (void) Fputs( logfile ,  "The format string \"" ) ; 
  3445.     (void) Fputs( stdout ,  "The format string \"" ) ; 
  3446.   } 
  3447.   printapoolstr ( poplit1 ) ; 
  3448.   {
  3449.     {
  3450.       (void) Fputs( logfile ,  "\" has an illegal brace-level-1 letter" ) ; 
  3451.       (void) Fputs( stdout ,  "\" has an illegal brace-level-1 letter" ) ; 
  3452.     } 
  3453.     bstexwarnprint () ; 
  3454.   } 
  3455. boolean zenoughtextchars ( enoughchars ) 
  3456. bufpointer enoughchars ; 
  3457. {register boolean Result; numtextchars = 0 ; 
  3458.   exbufyptr = exbufxptr ; 
  3459.   while ( ( ( exbufyptr < exbufptr ) && ( numtextchars < enoughchars ) ) ) {
  3460.       
  3461.     incr ( exbufyptr ) ; 
  3462.     if ( ( exbuf [ exbufyptr - 1 ] == 123 ) ) 
  3463.     {
  3464.       incr ( bracelevel ) ; 
  3465.       if ( ( ( bracelevel == 1 ) && ( exbufyptr < exbufptr ) ) ) 
  3466.       if ( ( exbuf [ exbufyptr ] == 92 ) ) 
  3467.       {
  3468.     incr ( exbufyptr ) ; 
  3469.     while ( ( ( exbufyptr < exbufptr ) && ( bracelevel > 0 ) ) ) {
  3470.         
  3471.       if ( ( exbuf [ exbufyptr ] == 125 ) ) 
  3472.       decr ( bracelevel ) ; 
  3473.       else if ( ( exbuf [ exbufyptr ] == 123 ) ) 
  3474.       incr ( bracelevel ) ; 
  3475.       incr ( exbufyptr ) ; 
  3476.     } 
  3477.       } 
  3478.     } 
  3479.     else if ( ( exbuf [ exbufyptr - 1 ] == 125 ) ) 
  3480.     decr ( bracelevel ) ; 
  3481.     incr ( numtextchars ) ; 
  3482.   } 
  3483.   if ( ( numtextchars < enoughchars ) ) 
  3484.   Result = false ; 
  3485.   else Result = true ; 
  3486.   return(Result) ; 
  3487. void figureouttheformatte ( ) 
  3488. {/* 15 */ {
  3489.     
  3490.     exbufptr = 0 ; 
  3491.     spbracelevel = 0 ; 
  3492.     spptr = strstart [ poplit1 ] ; 
  3493.     spend = strstart [ poplit1 + 1 ] ; 
  3494.     while ( ( spptr < spend ) ) if ( ( strpool [ spptr ] == 123 ) ) 
  3495.     {
  3496.       incr ( spbracelevel ) ; 
  3497.       incr ( spptr ) ; 
  3498.       {
  3499.     spxptr1 = spptr ; 
  3500.     alphafound = false ; 
  3501.     doubleletter = false ; 
  3502.     endofgroup = false ; 
  3503.     tobewritten = true ; 
  3504.     while ( ( ( ! endofgroup ) && ( spptr < spend ) ) ) if ( ( lexclass [ 
  3505.     strpool [ spptr ] ] == 2 ) ) 
  3506.     {
  3507.       incr ( spptr ) ; 
  3508.       {
  3509.         if ( ( alphafound ) ) 
  3510.         {
  3511.           bracelvlonelettersco () ; 
  3512.           tobewritten = false ; 
  3513.         } 
  3514.         else {
  3515.         
  3516.           switch ( ( strpool [ spptr - 1 ] ) ) 
  3517.           {case 102 : 
  3518.           case 70 : 
  3519.         {
  3520.           curtoken = firststart ; 
  3521.           lasttoken = firstend ; 
  3522.           if ( ( curtoken == lasttoken ) ) 
  3523.           tobewritten = false ; 
  3524.           if ( ( ( strpool [ spptr ] == 102 ) || ( strpool [ spptr ] 
  3525.           == 70 ) ) ) 
  3526.           doubleletter = true ; 
  3527.         } 
  3528.         break ; 
  3529.           case 118 : 
  3530.           case 86 : 
  3531.         {
  3532.           curtoken = vonstart ; 
  3533.           lasttoken = vonend ; 
  3534.           if ( ( curtoken == lasttoken ) ) 
  3535.           tobewritten = false ; 
  3536.           if ( ( ( strpool [ spptr ] == 118 ) || ( strpool [ spptr ] 
  3537.           == 86 ) ) ) 
  3538.           doubleletter = true ; 
  3539.         } 
  3540.         break ; 
  3541.           case 108 : 
  3542.           case 76 : 
  3543.         {
  3544.           curtoken = vonend ; 
  3545.           lasttoken = lastend ; 
  3546.           if ( ( curtoken == lasttoken ) ) 
  3547.           tobewritten = false ; 
  3548.           if ( ( ( strpool [ spptr ] == 108 ) || ( strpool [ spptr ] 
  3549.           == 76 ) ) ) 
  3550.           doubleletter = true ; 
  3551.         } 
  3552.         break ; 
  3553.           case 106 : 
  3554.           case 74 : 
  3555.         {
  3556.           curtoken = lastend ; 
  3557.           lasttoken = jrend ; 
  3558.           if ( ( curtoken == lasttoken ) ) 
  3559.           tobewritten = false ; 
  3560.           if ( ( ( strpool [ spptr ] == 106 ) || ( strpool [ spptr ] 
  3561.           == 74 ) ) ) 
  3562.           doubleletter = true ; 
  3563.         } 
  3564.         break ; 
  3565.         default: 
  3566.         {
  3567.           bracelvlonelettersco () ; 
  3568.           tobewritten = false ; 
  3569.         } 
  3570.         break ; 
  3571.           } 
  3572.           if ( ( doubleletter ) ) 
  3573.           incr ( spptr ) ; 
  3574.         } 
  3575.         alphafound = true ; 
  3576.       } 
  3577.     } 
  3578.     else if ( ( strpool [ spptr ] == 125 ) ) 
  3579.     {
  3580.       decr ( spbracelevel ) ; 
  3581.       incr ( spptr ) ; 
  3582.       endofgroup = true ; 
  3583.     } 
  3584.     else if ( ( strpool [ spptr ] == 123 ) ) 
  3585.     {
  3586.       incr ( spbracelevel ) ; 
  3587.       incr ( spptr ) ; 
  3588.       skipstuffatspbracele () ; 
  3589.     } 
  3590.     else incr ( spptr ) ; 
  3591.     if ( ( ( endofgroup ) && ( tobewritten ) ) ) 
  3592.     {
  3593.       exbufxptr = exbufptr ; 
  3594.       spptr = spxptr1 ; 
  3595.       spbracelevel = 1 ; 
  3596.       while ( ( spbracelevel > 0 ) ) if ( ( ( lexclass [ strpool [ spptr ] 
  3597.       ] == 2 ) && ( spbracelevel == 1 ) ) ) 
  3598.       {
  3599.         incr ( spptr ) ; 
  3600.         {
  3601.           if ( ( doubleletter ) ) 
  3602.           incr ( spptr ) ; 
  3603.           usedefault = true ; 
  3604.           spxptr2 = spptr ; 
  3605.           if ( ( strpool [ spptr ] == 123 ) ) 
  3606.           {
  3607.         usedefault = false ; 
  3608.         incr ( spbracelevel ) ; 
  3609.         incr ( spptr ) ; 
  3610.         spxptr1 = spptr ; 
  3611.         skipstuffatspbracele () ; 
  3612.         spxptr2 = spptr - 1 ; 
  3613.           } 
  3614.           while ( ( curtoken < lasttoken ) ) {
  3615.           
  3616.         if ( ( doubleletter ) ) 
  3617.         {
  3618.           namebfptr = nametok [ curtoken ] ; 
  3619.           namebfxptr = nametok [ curtoken + 1 ] ; 
  3620.           if ( ( exbuflength + ( namebfxptr - namebfptr ) > bufsize ) 
  3621.           ) 
  3622.           bufferoverflow () ; 
  3623.           while ( ( namebfptr < namebfxptr ) ) {
  3624.               
  3625.             {
  3626.               exbuf [ exbufptr ] = svbuffer [ namebfptr ] ; 
  3627.               incr ( exbufptr ) ; 
  3628.             } 
  3629.             incr ( namebfptr ) ; 
  3630.           } 
  3631.         } 
  3632.         else {
  3633.             
  3634.           namebfptr = nametok [ curtoken ] ; 
  3635.           namebfxptr = nametok [ curtoken + 1 ] ; 
  3636.           while ( ( namebfptr < namebfxptr ) ) {
  3637.               
  3638.             if ( ( lexclass [ svbuffer [ namebfptr ] ] == 2 ) ) 
  3639.             {
  3640.               {
  3641.             if ( ( exbufptr == bufsize ) ) 
  3642.             bufferoverflow () ; 
  3643.             {
  3644.               exbuf [ exbufptr ] = svbuffer [ namebfptr ] ; 
  3645.               incr ( exbufptr ) ; 
  3646.             } 
  3647.               } 
  3648.               goto lab15 ; 
  3649.             } 
  3650.             else if ( ( ( svbuffer [ namebfptr ] == 123 ) && ( 
  3651.             namebfptr + 1 < namebfxptr ) ) ) 
  3652.             if ( ( svbuffer [ namebfptr + 1 ] == 92 ) ) 
  3653.             {
  3654.               if ( ( exbufptr + 2 > bufsize ) ) 
  3655.               bufferoverflow () ; 
  3656.               {
  3657.             exbuf [ exbufptr ] = 123 ; 
  3658.             incr ( exbufptr ) ; 
  3659.               } 
  3660.               {
  3661.             exbuf [ exbufptr ] = 92 ; 
  3662.             incr ( exbufptr ) ; 
  3663.               } 
  3664.               namebfptr = namebfptr + 2 ; 
  3665.               nmbracelevel = 1 ; 
  3666.               while ( ( ( namebfptr < namebfxptr ) && ( nmbracelevel > 
  3667.               0 ) ) ) {
  3668.               
  3669.             if ( ( svbuffer [ namebfptr ] == 125 ) ) 
  3670.             decr ( nmbracelevel ) ; 
  3671.             else if ( ( svbuffer [ namebfptr ] == 123 ) ) 
  3672.             incr ( nmbracelevel ) ; 
  3673.             {
  3674.               if ( ( exbufptr == bufsize ) ) 
  3675.               bufferoverflow () ; 
  3676.               {
  3677.                 exbuf [ exbufptr ] = svbuffer [ namebfptr ] ; 
  3678.                 incr ( exbufptr ) ; 
  3679.               } 
  3680.             } 
  3681.             incr ( namebfptr ) ; 
  3682.               } 
  3683.               goto lab15 ; 
  3684.             } 
  3685.             incr ( namebfptr ) ; 
  3686.           } 
  3687.           lab15: ; 
  3688.         } 
  3689.         incr ( curtoken ) ; 
  3690.         if ( ( curtoken < lasttoken ) ) 
  3691.         {
  3692.           if ( ( usedefault ) ) 
  3693.           {
  3694.             if ( ( ! doubleletter ) ) 
  3695.             {
  3696.               if ( ( exbufptr == bufsize ) ) 
  3697.               bufferoverflow () ; 
  3698.               {
  3699.             exbuf [ exbufptr ] = 46 ; 
  3700.             incr ( exbufptr ) ; 
  3701.               } 
  3702.             } 
  3703.             if ( ( lexclass [ namesepchar [ curtoken ] ] == 4 ) ) 
  3704.             {
  3705.               if ( ( exbufptr == bufsize ) ) 
  3706.               bufferoverflow () ; 
  3707.               {
  3708.             exbuf [ exbufptr ] = namesepchar [ curtoken ] ; 
  3709.             incr ( exbufptr ) ; 
  3710.               } 
  3711.             } 
  3712.             else if ( ( ( curtoken == lasttoken - 1 ) || ( ! 
  3713.             enoughtextchars ( 3 ) ) ) ) 
  3714.             {
  3715.               if ( ( exbufptr == bufsize ) ) 
  3716.               bufferoverflow () ; 
  3717.               {
  3718.             exbuf [ exbufptr ] = 126 ; 
  3719.             incr ( exbufptr ) ; 
  3720.               } 
  3721.             } 
  3722.             else {
  3723.             
  3724.               if ( ( exbufptr == bufsize ) ) 
  3725.               bufferoverflow () ; 
  3726.               {
  3727.             exbuf [ exbufptr ] = 32 ; 
  3728.             incr ( exbufptr ) ; 
  3729.               } 
  3730.             } 
  3731.           } 
  3732.           else {
  3733.               
  3734.             if ( ( exbuflength + ( spxptr2 - spxptr1 ) > bufsize ) ) 
  3735.             bufferoverflow () ; 
  3736.             spptr = spxptr1 ; 
  3737.             while ( ( spptr < spxptr2 ) ) {
  3738.             
  3739.               {
  3740.             exbuf [ exbufptr ] = strpool [ spptr ] ; 
  3741.             incr ( exbufptr ) ; 
  3742.               } 
  3743.               incr ( spptr ) ; 
  3744.             } 
  3745.           } 
  3746.         } 
  3747.           } 
  3748.           if ( ( ! usedefault ) ) 
  3749.           spptr = spxptr2 + 1 ; 
  3750.         } 
  3751.       } 
  3752.       else if ( ( strpool [ spptr ] == 125 ) ) 
  3753.       {
  3754.         decr ( spbracelevel ) ; 
  3755.         incr ( spptr ) ; 
  3756.         if ( ( spbracelevel > 0 ) ) 
  3757.         {
  3758.           if ( ( exbufptr == bufsize ) ) 
  3759.           bufferoverflow () ; 
  3760.           {
  3761.         exbuf [ exbufptr ] = 125 ; 
  3762.         incr ( exbufptr ) ; 
  3763.           } 
  3764.         } 
  3765.       } 
  3766.       else if ( ( strpool [ spptr ] == 123 ) ) 
  3767.       {
  3768.         incr ( spbracelevel ) ; 
  3769.         incr ( spptr ) ; 
  3770.         {
  3771.           if ( ( exbufptr == bufsize ) ) 
  3772.           bufferoverflow () ; 
  3773.           {
  3774.         exbuf [ exbufptr ] = 123 ; 
  3775.         incr ( exbufptr ) ; 
  3776.           } 
  3777.         } 
  3778.       } 
  3779.       else {
  3780.           
  3781.         {
  3782.           if ( ( exbufptr == bufsize ) ) 
  3783.           bufferoverflow () ; 
  3784.           {
  3785.         exbuf [ exbufptr ] = strpool [ spptr ] ; 
  3786.         incr ( exbufptr ) ; 
  3787.           } 
  3788.         } 
  3789.         incr ( spptr ) ; 
  3790.       } 
  3791.       if ( ( exbufptr > 0 ) ) 
  3792.       if ( ( exbuf [ exbufptr - 1 ] == 126 ) ) 
  3793.       {
  3794.         decr ( exbufptr ) ; 
  3795.         if ( ( exbuf [ exbufptr - 1 ] == 126 ) ) 
  3796.         ; 
  3797.         else if ( ( ! enoughtextchars ( 3 ) ) ) 
  3798.         incr ( exbufptr ) ; 
  3799.         else {
  3800.         
  3801.           exbuf [ exbufptr ] = 32 ; 
  3802.           incr ( exbufptr ) ; 
  3803.         } 
  3804.       } 
  3805.     } 
  3806.       } 
  3807.     } 
  3808.     else if ( ( strpool [ spptr ] == 125 ) ) 
  3809.     {
  3810.       bracesunbalancedcomp ( poplit1 ) ; 
  3811.       incr ( spptr ) ; 
  3812.     } 
  3813.     else {
  3814.     
  3815.       {
  3816.     if ( ( exbufptr == bufsize ) ) 
  3817.     bufferoverflow () ; 
  3818.     {
  3819.       exbuf [ exbufptr ] = strpool [ spptr ] ; 
  3820.       incr ( exbufptr ) ; 
  3821.     } 
  3822.       } 
  3823.       incr ( spptr ) ; 
  3824.     } 
  3825.     if ( ( spbracelevel > 0 ) ) 
  3826.     bracesunbalancedcomp ( poplit1 ) ; 
  3827.     exbuflength = exbufptr ; 
  3828.   } 
  3829. void zpushlitstk ( pushlt , pushtype ) 
  3830. integer pushlt ; 
  3831. stktype pushtype ; 
  3832. {
  3833. #ifdef TRACE
  3834.   litstkloc dumptr  ; 
  3835. #endif /* TRACE */
  3836.   litstack [ litstkptr ] = pushlt ; 
  3837.   litstktype [ litstkptr ] = pushtype ; 
  3838.     ;
  3839. #ifdef TRACE
  3840.   {register integer for_end; dumptr = 0 ; for_end = litstkptr ; if ( dumptr 
  3841.   <= for_end) do 
  3842.     {
  3843.       (void) Fputs( logfile ,  "  " ) ; 
  3844.     } 
  3845.   while ( dumptr++ < for_end ) ; } 
  3846.   {
  3847.     (void) Fputs( logfile ,  "Pushing " ) ; 
  3848.   } 
  3849.   switch ( ( litstktype [ litstkptr ] ) ) 
  3850.   {case 0 : 
  3851.     {
  3852.       (void) fprintf( logfile , "%ld\n",  (long)litstack [ litstkptr ] ) ; 
  3853.     } 
  3854.     break ; 
  3855.   case 1 : 
  3856.     {
  3857.       {
  3858.     (void) putc( '"' ,  logfile );
  3859.       } 
  3860.       {
  3861.     outpoolstr ( logfile , litstack [ litstkptr ] ) ; 
  3862.       } 
  3863.       {
  3864.     (void) fprintf( logfile , "%c\n",  '"' ) ; 
  3865.       } 
  3866.     } 
  3867.     break ; 
  3868.   case 2 : 
  3869.     {
  3870.       {
  3871.     (void) putc( '`' ,  logfile );
  3872.       } 
  3873.       {
  3874.     outpoolstr ( logfile , hashtext [ litstack [ litstkptr ] ] ) ; 
  3875.       } 
  3876.       {
  3877.     (void) fprintf( logfile , "%c\n",  '\'' ) ; 
  3878.       } 
  3879.     } 
  3880.     break ; 
  3881.   case 3 : 
  3882.     {
  3883.       {
  3884.     (void) Fputs( logfile ,  "missing field `" ) ; 
  3885.       } 
  3886.       {
  3887.     outpoolstr ( logfile , litstack [ litstkptr ] ) ; 
  3888.       } 
  3889.       {
  3890.     (void) fprintf( logfile , "%c\n",  '\'' ) ; 
  3891.       } 
  3892.     } 
  3893.     break ; 
  3894.   case 4 : 
  3895.     {
  3896.       (void) fprintf( logfile , "%s\n",  "a bad literal--popped from an empty stack" ) ; 
  3897.     } 
  3898.     break ; 
  3899.     default: 
  3900.     unknwnliteralconfusi () ; 
  3901.     break ; 
  3902.   } 
  3903. #endif /* TRACE */
  3904.   if ( ( litstkptr == litstksize ) ) 
  3905.   {
  3906.     printoverflow () ; 
  3907.     {
  3908.       (void) fprintf( logfile , "%s%ld\n",  "literal-stack size " , (long)litstksize ) ; 
  3909.       (void) fprintf( stdout , "%s%ld\n",  "literal-stack size " , (long)litstksize ) ; 
  3910.     } 
  3911.     longjmp(jmp9998,1) ; 
  3912.   } 
  3913.   incr ( litstkptr ) ; 
  3914. void zpoplitstk ( poplit , poptype ) 
  3915. integer * poplit ; 
  3916. stktype * poptype ; 
  3917. {if ( ( litstkptr == 0 ) ) 
  3918.   {
  3919.     {
  3920.       {
  3921.     (void) Fputs( logfile ,  "You can't pop an empty literal stack" ) ; 
  3922.     (void) Fputs( stdout ,  "You can't pop an empty literal stack" ) ; 
  3923.       } 
  3924.       bstexwarnprint () ; 
  3925.     } 
  3926. *    poptype = 4 ; 
  3927.   } 
  3928.   else {
  3929.       
  3930.     decr ( litstkptr ) ; 
  3931. *    poplit = litstack [ litstkptr ] ; 
  3932. *    poptype = litstktype [ litstkptr ] ; 
  3933.     if ( ( *poptype == 1 ) ) 
  3934.     if ( ( *poplit >= cmdstrptr ) ) 
  3935.     {
  3936.       if ( ( *poplit != strptr - 1 ) ) 
  3937.       {
  3938.     {
  3939.       (void) Fputs( logfile ,  "Nontop top of string stack" ) ; 
  3940.       (void) Fputs( stdout ,  "Nontop top of string stack" ) ; 
  3941.     } 
  3942.     printconfusion () ; 
  3943.     longjmp(jmp9998,1) ; 
  3944.       } 
  3945.       {
  3946.     decr ( strptr ) ; 
  3947.     poolptr = strstart [ strptr ] ; 
  3948.       } 
  3949.     } 
  3950.   } 
  3951. void zprintwrongstklit ( stklt , stktp1 , stktp2 ) 
  3952. integer stklt ; 
  3953. stktype stktp1 ; 
  3954. stktype stktp2 ; 
  3955. {if ( ( stktp1 != 4 ) ) 
  3956.   {
  3957.     printstklit ( stklt , stktp1 ) ; 
  3958.     switch ( ( stktp2 ) ) 
  3959.     {case 0 : 
  3960.       {
  3961.     (void) Fputs( logfile ,  ", not an integer," ) ; 
  3962.     (void) Fputs( stdout ,  ", not an integer," ) ; 
  3963.       } 
  3964.       break ; 
  3965.     case 1 : 
  3966.       {
  3967.     (void) Fputs( logfile ,  ", not a string," ) ; 
  3968.     (void) Fputs( stdout ,  ", not a string," ) ; 
  3969.       } 
  3970.       break ; 
  3971.     case 2 : 
  3972.       {
  3973.     (void) Fputs( logfile ,  ", not a function," ) ; 
  3974.     (void) Fputs( stdout ,  ", not a function," ) ; 
  3975.       } 
  3976.       break ; 
  3977.     case 3 : 
  3978.     case 4 : 
  3979.       illeglliteralconfusi () ; 
  3980.       break ; 
  3981.       default: 
  3982.       unknwnliteralconfusi () ; 
  3983.       break ; 
  3984.     } 
  3985.     bstexwarnprint () ; 
  3986.   } 
  3987. void poptopandprint ( ) 
  3988. {integer stklt  ; 
  3989.   stktype stktp  ; 
  3990.   poplitstk ( stklt , stktp ) ; 
  3991.   if ( ( stktp == 4 ) ) 
  3992.   {
  3993.     (void) fprintf( logfile , "%s\n",  "Empty literal" ) ; 
  3994.     (void) fprintf( stdout , "%s\n",  "Empty literal" ) ; 
  3995.   } 
  3996.   else printlit ( stklt , stktp ) ; 
  3997. void popwholestack ( ) 
  3998. {while ( ( litstkptr > 0 ) ) poptopandprint () ; 
  3999. void initcommandexecution ( ) 
  4000. {litstkptr = 0 ; 
  4001.   cmdstrptr = strptr ; 
  4002. void checkcommandexecutio ( ) 
  4003. {if ( ( litstkptr != 0 ) ) 
  4004.   {
  4005.     {
  4006.       (void) fprintf( logfile , "%s%ld%s\n",  "ptr=" , (long)litstkptr , ", stack=" ) ; 
  4007.       (void) fprintf( stdout , "%s%ld%s\n",  "ptr=" , (long)litstkptr , ", stack=" ) ; 
  4008.     } 
  4009.     popwholestack () ; 
  4010.     {
  4011.       {
  4012.     (void) Fputs( logfile ,  "---the literal stack isn't empty" ) ; 
  4013.     (void) Fputs( stdout ,  "---the literal stack isn't empty" ) ; 
  4014.       } 
  4015.       bstexwarnprint () ; 
  4016.     } 
  4017.   } 
  4018.   if ( ( cmdstrptr != strptr ) ) 
  4019.   {
  4020.     ;
  4021. #ifdef TRACE
  4022.     {
  4023.       (void) fprintf( logfile , "%s%ld%s%ld\n",  "Pointer is " , (long)strptr , " but should be " ,       (long)cmdstrptr ) ; 
  4024.       (void) fprintf( stdout , "%s%ld%s%ld\n",  "Pointer is " , (long)strptr , " but should be " ,       (long)cmdstrptr ) ; 
  4025.     } 
  4026. #endif /* TRACE */
  4027.     {
  4028.       {
  4029.     (void) Fputs( logfile ,  "Nonempty empty string stack" ) ; 
  4030.     (void) Fputs( stdout ,  "Nonempty empty string stack" ) ; 
  4031.       } 
  4032.       printconfusion () ; 
  4033.       longjmp(jmp9998,1) ; 
  4034.     } 
  4035.   } 
  4036. void addpoolbufandpush ( ) 
  4037. {{
  4038.     
  4039.     if ( ( poolptr + exbuflength > poolsize ) ) 
  4040.     pooloverflow () ; 
  4041.   } 
  4042.   exbufptr = 0 ; 
  4043.   while ( ( exbufptr < exbuflength ) ) {
  4044.       
  4045.     {
  4046.       strpool [ poolptr ] = exbuf [ exbufptr ] ; 
  4047.       incr ( poolptr ) ; 
  4048.     } 
  4049.     incr ( exbufptr ) ; 
  4050.   } 
  4051.   pushlitstk ( makestring () , 1 ) ; 
  4052. void zaddbufpool ( pstr ) 
  4053. strnumber pstr ; 
  4054. {pptr1 = strstart [ pstr ] ; 
  4055.   pptr2 = strstart [ pstr + 1 ] ; 
  4056.   if ( ( exbuflength + ( pptr2 - pptr1 ) > bufsize ) ) 
  4057.   bufferoverflow () ; 
  4058.   exbufptr = exbuflength ; 
  4059.   while ( ( pptr1 < pptr2 ) ) {
  4060.       
  4061.     {
  4062.       exbuf [ exbufptr ] = strpool [ pptr1 ] ; 
  4063.       incr ( exbufptr ) ; 
  4064.     } 
  4065.     incr ( pptr1 ) ; 
  4066.   } 
  4067.   exbuflength = exbufptr ; 
  4068. void zaddoutpool ( pstr ) 
  4069. strnumber pstr ; 
  4070. {bufpointer breakptr  ; 
  4071.   bufpointer endptr  ; 
  4072.   pptr1 = strstart [ pstr ] ; 
  4073.   pptr2 = strstart [ pstr + 1 ] ; 
  4074.   if ( ( outbuflength + ( pptr2 - pptr1 ) > bufsize ) ) 
  4075.   {
  4076.     printoverflow () ; 
  4077.     {
  4078.       (void) fprintf( logfile , "%s%ld\n",  "output buffer size " , (long)bufsize ) ; 
  4079.       (void) fprintf( stdout , "%s%ld\n",  "output buffer size " , (long)bufsize ) ; 
  4080.     } 
  4081.     longjmp(jmp9998,1) ; 
  4082.   } 
  4083.   outbufptr = outbuflength ; 
  4084.   while ( ( pptr1 < pptr2 ) ) {
  4085.       
  4086.     outbuf [ outbufptr ] = strpool [ pptr1 ] ; 
  4087.     incr ( pptr1 ) ; 
  4088.     incr ( outbufptr ) ; 
  4089.   } 
  4090.   outbuflength = outbufptr ; 
  4091.   while ( ( outbuflength > maxprintline ) ) {
  4092.       
  4093.     endptr = outbuflength ; 
  4094.     outbufptr = maxprintline ; 
  4095.     while ( ( ( lexclass [ outbuf [ outbufptr ] ] != 1 ) && ( outbufptr >= 
  4096.     minprintline ) ) ) decr ( outbufptr ) ; 
  4097.     if ( ( outbufptr == minprintline - 1 ) ) 
  4098.     {
  4099.       outbuf [ endptr ] = outbuf [ maxprintline - 1 ] ; 
  4100.       outbuf [ maxprintline - 1 ] = 37 ; 
  4101.       outbuflength = maxprintline ; 
  4102.       breakptr = outbuflength - 1 ; 
  4103.       outputbblline () ; 
  4104.       outbuf [ maxprintline - 1 ] = outbuf [ endptr ] ; 
  4105.       outbufptr = 0 ; 
  4106.       tmpptr = breakptr ; 
  4107.       while ( ( tmpptr < endptr ) ) {
  4108.       
  4109.     outbuf [ outbufptr ] = outbuf [ tmpptr ] ; 
  4110.     incr ( outbufptr ) ; 
  4111.     incr ( tmpptr ) ; 
  4112.       } 
  4113.       outbuflength = endptr - breakptr ; 
  4114.     } 
  4115.     else {
  4116.     
  4117.       outbuflength = outbufptr ; 
  4118.       breakptr = outbuflength + 1 ; 
  4119.       outputbblline () ; 
  4120.       outbuf [ 0 ] = 32 ; 
  4121.       outbuf [ 1 ] = 32 ; 
  4122.       outbufptr = 2 ; 
  4123.       tmpptr = breakptr ; 
  4124.       while ( ( tmpptr < endptr ) ) {
  4125.       
  4126.     outbuf [ outbufptr ] = outbuf [ tmpptr ] ; 
  4127.     incr ( outbufptr ) ; 
  4128.     incr ( tmpptr ) ; 
  4129.       } 
  4130.       outbuflength = endptr - breakptr + 2 ; 
  4131.     } 
  4132.   } 
  4133. void xequals ( ) 
  4134. {poplitstk ( poplit1 , poptyp1 ) ; 
  4135.   poplitstk ( poplit2 , poptyp2 ) ; 
  4136.   if ( ( poptyp1 != poptyp2 ) ) 
  4137.   {
  4138.     if ( ( ( poptyp1 != 4 ) && ( poptyp2 != 4 ) ) ) 
  4139.     {
  4140.       printstklit ( poplit1 , poptyp1 ) ; 
  4141.       {
  4142.     (void) Fputs( logfile ,  ", " ) ; 
  4143.     (void) Fputs( stdout ,  ", " ) ; 
  4144.       } 
  4145.       printstklit ( poplit2 , poptyp2 ) ; 
  4146.       printanewline () ; 
  4147.       {
  4148.     {
  4149.       (void) Fputs( logfile ,  "---they aren't the same literal types" ) ; 
  4150.       (void) Fputs( stdout ,  "---they aren't the same literal types" ) ; 
  4151.     } 
  4152.     bstexwarnprint () ; 
  4153.       } 
  4154.     } 
  4155.     pushlitstk ( 0 , 0 ) ; 
  4156.   } 
  4157.   else if ( ( ( poptyp1 != 0 ) && ( poptyp1 != 1 ) ) ) 
  4158.   {
  4159.     if ( ( poptyp1 != 4 ) ) 
  4160.     {
  4161.       printstklit ( poplit1 , poptyp1 ) ; 
  4162.       {
  4163.     {
  4164.       (void) Fputs( logfile ,  ", not an integer or a string," ) ; 
  4165.       (void) Fputs( stdout ,  ", not an integer or a string," ) ; 
  4166.     } 
  4167.     bstexwarnprint () ; 
  4168.       } 
  4169.     } 
  4170.     pushlitstk ( 0 , 0 ) ; 
  4171.   } 
  4172.   else if ( ( poptyp1 == 0 ) ) 
  4173.   if ( ( poplit2 == poplit1 ) ) 
  4174.   pushlitstk ( 1 , 0 ) ; 
  4175.   else pushlitstk ( 0 , 0 ) ; 
  4176.   else if ( ( streqstr ( poplit2 , poplit1 ) ) ) 
  4177.   pushlitstk ( 1 , 0 ) ; 
  4178.   else pushlitstk ( 0 , 0 ) ; 
  4179. void xgreaterthan ( ) 
  4180. {poplitstk ( poplit1 , poptyp1 ) ; 
  4181.   poplitstk ( poplit2 , poptyp2 ) ; 
  4182.   if ( ( poptyp1 != 0 ) ) 
  4183.   {
  4184.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  4185.     pushlitstk ( 0 , 0 ) ; 
  4186.   } 
  4187.   else if ( ( poptyp2 != 0 ) ) 
  4188.   {
  4189.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  4190.     pushlitstk ( 0 , 0 ) ; 
  4191.   } 
  4192.   else if ( ( poplit2 > poplit1 ) ) 
  4193.   pushlitstk ( 1 , 0 ) ; 
  4194.   else pushlitstk ( 0 , 0 ) ; 
  4195. void xlessthan ( ) 
  4196. {poplitstk ( poplit1 , poptyp1 ) ; 
  4197.   poplitstk ( poplit2 , poptyp2 ) ; 
  4198.   if ( ( poptyp1 != 0 ) ) 
  4199.   {
  4200.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  4201.     pushlitstk ( 0 , 0 ) ; 
  4202.   } 
  4203.   else if ( ( poptyp2 != 0 ) ) 
  4204.   {
  4205.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  4206.     pushlitstk ( 0 , 0 ) ; 
  4207.   } 
  4208.   else if ( ( poplit2 < poplit1 ) ) 
  4209.   pushlitstk ( 1 , 0 ) ; 
  4210.   else pushlitstk ( 0 , 0 ) ; 
  4211. void xplus ( ) 
  4212. {poplitstk ( poplit1 , poptyp1 ) ; 
  4213.   poplitstk ( poplit2 , poptyp2 ) ; 
  4214.   if ( ( poptyp1 != 0 ) ) 
  4215.   {
  4216.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  4217.     pushlitstk ( 0 , 0 ) ; 
  4218.   } 
  4219.   else if ( ( poptyp2 != 0 ) ) 
  4220.   {
  4221.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  4222.     pushlitstk ( 0 , 0 ) ; 
  4223.   } 
  4224.   else pushlitstk ( poplit2 + poplit1 , 0 ) ; 
  4225. void xminus ( ) 
  4226. {poplitstk ( poplit1 , poptyp1 ) ; 
  4227.   poplitstk ( poplit2 , poptyp2 ) ; 
  4228.   if ( ( poptyp1 != 0 ) ) 
  4229.   {
  4230.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  4231.     pushlitstk ( 0 , 0 ) ; 
  4232.   } 
  4233.   else if ( ( poptyp2 != 0 ) ) 
  4234.   {
  4235.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  4236.     pushlitstk ( 0 , 0 ) ; 
  4237.   } 
  4238.   else pushlitstk ( poplit2 - poplit1 , 0 ) ; 
  4239. void xconcatenate ( ) 
  4240. {poplitstk ( poplit1 , poptyp1 ) ; 
  4241.   poplitstk ( poplit2 , poptyp2 ) ; 
  4242.   if ( ( poptyp1 != 1 ) ) 
  4243.   {
  4244.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  4245.     pushlitstk ( snull , 1 ) ; 
  4246.   } 
  4247.   else if ( ( poptyp2 != 1 ) ) 
  4248.   {
  4249.     printwrongstklit ( poplit2 , poptyp2 , 1 ) ; 
  4250.     pushlitstk ( snull , 1 ) ; 
  4251.   } 
  4252.   else {
  4253.       
  4254.     if ( ( poplit2 >= cmdstrptr ) ) 
  4255.     if ( ( poplit1 >= cmdstrptr ) ) 
  4256.     {
  4257.       strstart [ poplit1 ] = strstart [ poplit1 + 1 ] ; 
  4258.       {
  4259.     incr ( strptr ) ; 
  4260.     poolptr = strstart [ strptr ] ; 
  4261.       } 
  4262.       incr ( litstkptr ) ; 
  4263.     } 
  4264.     else if ( ( ( strstart [ poplit2 + 1 ] - strstart [ poplit2 ] ) == 0 ) ) 
  4265.     pushlitstk ( poplit1 , 1 ) ; 
  4266.     else {
  4267.     
  4268.       poolptr = strstart [ poplit2 + 1 ] ; 
  4269.       {
  4270.     if ( ( poolptr + ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) > 
  4271.     poolsize ) ) 
  4272.     pooloverflow () ; 
  4273.       } 
  4274.       spptr = strstart [ poplit1 ] ; 
  4275.       spend = strstart [ poplit1 + 1 ] ; 
  4276.       while ( ( spptr < spend ) ) {
  4277.       
  4278.     {
  4279.       strpool [ poolptr ] = strpool [ spptr ] ; 
  4280.       incr ( poolptr ) ; 
  4281.     } 
  4282.     incr ( spptr ) ; 
  4283.       } 
  4284.       pushlitstk ( makestring () , 1 ) ; 
  4285.     } 
  4286.     else {
  4287.     
  4288.       if ( ( poplit1 >= cmdstrptr ) ) 
  4289.       if ( ( ( strstart [ poplit2 + 1 ] - strstart [ poplit2 ] ) == 0 ) ) 
  4290.       {
  4291.     {
  4292.       incr ( strptr ) ; 
  4293.       poolptr = strstart [ strptr ] ; 
  4294.     } 
  4295.     litstack [ litstkptr ] = poplit1 ; 
  4296.     incr ( litstkptr ) ; 
  4297.       } 
  4298.       else if ( ( ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) == 0 ) ) 
  4299.       incr ( litstkptr ) ; 
  4300.       else {
  4301.       
  4302.     splength = ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) ; 
  4303.     sp2length = ( strstart [ poplit2 + 1 ] - strstart [ poplit2 ] ) ; 
  4304.     {
  4305.       if ( ( poolptr + splength + sp2length > poolsize ) ) 
  4306.       pooloverflow () ; 
  4307.     } 
  4308.     spptr = strstart [ poplit1 + 1 ] ; 
  4309.     spend = strstart [ poplit1 ] ; 
  4310.     spxptr1 = spptr + sp2length ; 
  4311.     while ( ( spptr > spend ) ) {
  4312.         
  4313.       decr ( spptr ) ; 
  4314.       decr ( spxptr1 ) ; 
  4315.       strpool [ spxptr1 ] = strpool [ spptr ] ; 
  4316.     } 
  4317.     spptr = strstart [ poplit2 ] ; 
  4318.     spend = strstart [ poplit2 + 1 ] ; 
  4319.     while ( ( spptr < spend ) ) {
  4320.         
  4321.       {
  4322.         strpool [ poolptr ] = strpool [ spptr ] ; 
  4323.         incr ( poolptr ) ; 
  4324.       } 
  4325.       incr ( spptr ) ; 
  4326.     } 
  4327.     poolptr = poolptr + splength ; 
  4328.     pushlitstk ( makestring () , 1 ) ; 
  4329.       } 
  4330.       else {
  4331.       
  4332.     if ( ( ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) == 0 ) ) 
  4333.     incr ( litstkptr ) ; 
  4334.     else if ( ( ( strstart [ poplit2 + 1 ] - strstart [ poplit2 ] ) == 0 ) 
  4335.     ) 
  4336.     pushlitstk ( poplit1 , 1 ) ; 
  4337.     else {
  4338.         
  4339.       {
  4340.         if ( ( poolptr + ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] 
  4341.         ) + ( strstart [ poplit2 + 1 ] - strstart [ poplit2 ] ) > poolsize 
  4342.         ) ) 
  4343.         pooloverflow () ; 
  4344.       } 
  4345.       spptr = strstart [ poplit2 ] ; 
  4346.       spend = strstart [ poplit2 + 1 ] ; 
  4347.       while ( ( spptr < spend ) ) {
  4348.           
  4349.         {
  4350.           strpool [ poolptr ] = strpool [ spptr ] ; 
  4351.           incr ( poolptr ) ; 
  4352.         } 
  4353.         incr ( spptr ) ; 
  4354.       } 
  4355.       spptr = strstart [ poplit1 ] ; 
  4356.       spend = strstart [ poplit1 + 1 ] ; 
  4357.       while ( ( spptr < spend ) ) {
  4358.           
  4359.         {
  4360.           strpool [ poolptr ] = strpool [ spptr ] ; 
  4361.           incr ( poolptr ) ; 
  4362.         } 
  4363.         incr ( spptr ) ; 
  4364.       } 
  4365.       pushlitstk ( makestring () , 1 ) ; 
  4366.     } 
  4367.       } 
  4368.     } 
  4369.   } 
  4370. void xgets ( ) 
  4371. {poplitstk ( poplit1 , poptyp1 ) ; 
  4372.   poplitstk ( poplit2 , poptyp2 ) ; 
  4373.   if ( ( poptyp1 != 2 ) ) 
  4374.   printwrongstklit ( poplit1 , poptyp1 , 2 ) ; 
  4375.   else if ( ( ( ! messwithentries ) && ( ( fntype [ poplit1 ] == 6 ) || ( 
  4376.   fntype [ poplit1 ] == 5 ) ) ) ) 
  4377.   bstcantmesswithentri () ; 
  4378.   else switch ( ( fntype [ poplit1 ] ) ) 
  4379.   {case 5 : 
  4380.     if ( ( poptyp2 != 0 ) ) 
  4381.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  4382.     else entryints [ citeptr * numentints + ilkinfo [ poplit1 ] ] = poplit2 ; 
  4383.     break ; 
  4384.   case 6 : 
  4385.     {
  4386.       if ( ( poptyp2 != 1 ) ) 
  4387.       printwrongstklit ( poplit2 , poptyp2 , 1 ) ; 
  4388.       else {
  4389.       
  4390.     strentptr = citeptr * numentstrs + ilkinfo [ poplit1 ] ; 
  4391.     entchrptr = 0 ; 
  4392.     spptr = strstart [ poplit2 ] ; 
  4393.     spxptr1 = strstart [ poplit2 + 1 ] ; 
  4394.     if ( ( spxptr1 - spptr > entstrsize ) ) 
  4395.     {
  4396.       {
  4397.         bst1printstringsizee () ; 
  4398.         {
  4399.           (void) fprintf( logfile , "%ld%s",  (long)entstrsize , ", the entry" ) ; 
  4400.           (void) fprintf( stdout , "%ld%s",  (long)entstrsize , ", the entry" ) ; 
  4401.         } 
  4402.         bst2printstringsizee () ; 
  4403.       } 
  4404.       spxptr1 = spptr + entstrsize ; 
  4405.     } 
  4406.     while ( ( spptr < spxptr1 ) ) {
  4407.         
  4408.       entrystrs [ strentptr ] [ entchrptr ] = strpool [ spptr ] ; 
  4409.       incr ( entchrptr ) ; 
  4410.       incr ( spptr ) ; 
  4411.     } 
  4412.     entrystrs [ strentptr ] [ entchrptr ] = 127 ; 
  4413.       } 
  4414.     } 
  4415.     break ; 
  4416.   case 7 : 
  4417.     if ( ( poptyp2 != 0 ) ) 
  4418.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  4419.     else ilkinfo [ poplit1 ] = poplit2 ; 
  4420.     break ; 
  4421.   case 8 : 
  4422.     {
  4423.       if ( ( poptyp2 != 1 ) ) 
  4424.       printwrongstklit ( poplit2 , poptyp2 , 1 ) ; 
  4425.       else {
  4426.       
  4427.     strglbptr = ilkinfo [ poplit1 ] ; 
  4428.     if ( ( poplit2 < cmdstrptr ) ) 
  4429.     glbstrptr [ strglbptr ] = poplit2 ; 
  4430.     else {
  4431.         
  4432.       glbstrptr [ strglbptr ] = 0 ; 
  4433.       globchrptr = 0 ; 
  4434.       spptr = strstart [ poplit2 ] ; 
  4435.       spend = strstart [ poplit2 + 1 ] ; 
  4436.       if ( ( spend - spptr > globstrsize ) ) 
  4437.       {
  4438.         {
  4439.           bst1printstringsizee () ; 
  4440.           {
  4441.         (void) fprintf( logfile , "%ld%s",  (long)globstrsize , ", the global" ) ; 
  4442.         (void) fprintf( stdout , "%ld%s",  (long)globstrsize , ", the global" ) ; 
  4443.           } 
  4444.           bst2printstringsizee () ; 
  4445.         } 
  4446.         spend = spptr + globstrsize ; 
  4447.       } 
  4448.       while ( ( spptr < spend ) ) {
  4449.           
  4450.         globalstrs [ strglbptr ] [ globchrptr ] = strpool [ spptr ] ; 
  4451.         incr ( globchrptr ) ; 
  4452.         incr ( spptr ) ; 
  4453.       } 
  4454.       glbstrend [ strglbptr ] = globchrptr ; 
  4455.     } 
  4456.       } 
  4457.     } 
  4458.     break ; 
  4459.     default: 
  4460.     {
  4461.       {
  4462.     (void) Fputs( logfile ,  "You can't assign to type " ) ; 
  4463.     (void) Fputs( stdout ,  "You can't assign to type " ) ; 
  4464.       } 
  4465.       printfnclass ( poplit1 ) ; 
  4466.       {
  4467.     {
  4468.       (void) Fputs( logfile ,  ", a nonvariable function class" ) ; 
  4469.       (void) Fputs( stdout ,  ", a nonvariable function class" ) ; 
  4470.     } 
  4471.     bstexwarnprint () ; 
  4472.       } 
  4473.     } 
  4474.     break ; 
  4475.   } 
  4476. void xaddperiod ( ) 
  4477. {/* 15 */ poplitstk ( poplit1 , poptyp1 ) ; 
  4478.   if ( ( poptyp1 != 1 ) ) 
  4479.   {
  4480.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  4481.     pushlitstk ( snull , 1 ) ; 
  4482.   } 
  4483.   else if ( ( ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) == 0 ) ) 
  4484.   pushlitstk ( snull , 1 ) ; 
  4485.   else {
  4486.       
  4487.     spptr = strstart [ poplit1 + 1 ] ; 
  4488.     spend = strstart [ poplit1 ] ; 
  4489.     while ( ( spptr > spend ) ) {
  4490.     
  4491.       decr ( spptr ) ; 
  4492.       if ( ( strpool [ spptr ] != 125 ) ) 
  4493.       goto lab15 ; 
  4494.     } 
  4495.     lab15: switch ( ( strpool [ spptr ] ) ) 
  4496.     {case 46 : 
  4497.     case 63 : 
  4498.     case 33 : 
  4499.       {
  4500.     if ( ( litstack [ litstkptr ] >= cmdstrptr ) ) 
  4501.     {
  4502.       incr ( strptr ) ; 
  4503.       poolptr = strstart [ strptr ] ; 
  4504.     } 
  4505.     incr ( litstkptr ) ; 
  4506.       } 
  4507.       break ; 
  4508.       default: 
  4509.       {
  4510.     if ( ( poplit1 < cmdstrptr ) ) 
  4511.     {
  4512.       {
  4513.         if ( ( poolptr + ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] 
  4514.         ) + 1 > poolsize ) ) 
  4515.         pooloverflow () ; 
  4516.       } 
  4517.       spptr = strstart [ poplit1 ] ; 
  4518.       spend = strstart [ poplit1 + 1 ] ; 
  4519.       while ( ( spptr < spend ) ) {
  4520.           
  4521.         {
  4522.           strpool [ poolptr ] = strpool [ spptr ] ; 
  4523.           incr ( poolptr ) ; 
  4524.         } 
  4525.         incr ( spptr ) ; 
  4526.       } 
  4527.     } 
  4528.     else {
  4529.         
  4530.       poolptr = strstart [ poplit1 + 1 ] ; 
  4531.       {
  4532.         if ( ( poolptr + 1 > poolsize ) ) 
  4533.         pooloverflow () ; 
  4534.       } 
  4535.     } 
  4536.     {
  4537.       strpool [ poolptr ] = 46 ; 
  4538.       incr ( poolptr ) ; 
  4539.     } 
  4540.     pushlitstk ( makestring () , 1 ) ; 
  4541.       } 
  4542.       break ; 
  4543.     } 
  4544.   } 
  4545. void xchangecase ( ) 
  4546. {/* 21 */ poplitstk ( poplit1 , poptyp1 ) ; 
  4547.   poplitstk ( poplit2 , poptyp2 ) ; 
  4548.   if ( ( poptyp1 != 1 ) ) 
  4549.   {
  4550.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  4551.     pushlitstk ( snull , 1 ) ; 
  4552.   } 
  4553.   else if ( ( poptyp2 != 1 ) ) 
  4554.   {
  4555.     printwrongstklit ( poplit2 , poptyp2 , 1 ) ; 
  4556.     pushlitstk ( snull , 1 ) ; 
  4557.   } 
  4558.   else {
  4559.       
  4560.     {
  4561.       switch ( ( strpool [ strstart [ poplit1 ] ] ) ) 
  4562.       {case 116 : 
  4563.       case 84 : 
  4564.     conversiontype = 0 ; 
  4565.     break ; 
  4566.       case 108 : 
  4567.       case 76 : 
  4568.     conversiontype = 1 ; 
  4569.     break ; 
  4570.       case 117 : 
  4571.       case 85 : 
  4572.     conversiontype = 2 ; 
  4573.     break ; 
  4574.     default: 
  4575.     conversiontype = 3 ; 
  4576.     break ; 
  4577.       } 
  4578.       if ( ( ( ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) != 1 ) || ( 
  4579.       conversiontype == 3 ) ) ) 
  4580.       {
  4581.     conversiontype = 3 ; 
  4582.     printapoolstr ( poplit1 ) ; 
  4583.     {
  4584.       {
  4585.         (void) Fputs( logfile ,  " is an illegal case-conversion string" ) ; 
  4586.         (void) Fputs( stdout ,  " is an illegal case-conversion string" ) ; 
  4587.       } 
  4588.       bstexwarnprint () ; 
  4589.     } 
  4590.       } 
  4591.     } 
  4592.     exbuflength = 0 ; 
  4593.     addbufpool ( poplit2 ) ; 
  4594.     {
  4595.       bracelevel = 0 ; 
  4596.       exbufptr = 0 ; 
  4597.       while ( ( exbufptr < exbuflength ) ) {
  4598.       
  4599.     if ( ( exbuf [ exbufptr ] == 123 ) ) 
  4600.     {
  4601.       incr ( bracelevel ) ; 
  4602.       if ( ( bracelevel != 1 ) ) 
  4603.       goto lab21 ; 
  4604.       if ( ( exbufptr + 4 > exbuflength ) ) 
  4605.       goto lab21 ; 
  4606.       else if ( ( exbuf [ exbufptr + 1 ] != 92 ) ) 
  4607.       goto lab21 ; 
  4608.       if ( ( conversiontype == 0 ) ) 
  4609.       if ( ( exbufptr == 0 ) ) 
  4610.       goto lab21 ; 
  4611.       else if ( ( ( prevcolon ) && ( lexclass [ exbuf [ exbufptr - 1 ] ] 
  4612.       == 1 ) ) ) 
  4613.       goto lab21 ; 
  4614.       {
  4615.         incr ( exbufptr ) ; 
  4616.         while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) ) ) {
  4617.         
  4618.           incr ( exbufptr ) ; 
  4619.           exbufxptr = exbufptr ; 
  4620.           while ( ( ( exbufptr < exbuflength ) && ( lexclass [ exbuf [ 
  4621.           exbufptr ] ] == 2 ) ) ) incr ( exbufptr ) ; 
  4622.           controlseqloc = strlookup ( exbuf , exbufxptr , exbufptr - 
  4623.           exbufxptr , 14 , false ) ; 
  4624.           if ( ( hashfound ) ) 
  4625.           {
  4626.         switch ( ( conversiontype ) ) 
  4627.         {case 0 : 
  4628.         case 1 : 
  4629.           switch ( ( ilkinfo [ controlseqloc ] ) ) 
  4630.           {case 11 : 
  4631.           case 9 : 
  4632.           case 3 : 
  4633.           case 5 : 
  4634.           case 7 : 
  4635.             lowercase ( exbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  4636.             break ; 
  4637.             default: 
  4638.             ; 
  4639.             break ; 
  4640.           } 
  4641.           break ; 
  4642.         case 2 : 
  4643.           switch ( ( ilkinfo [ controlseqloc ] ) ) 
  4644.           {case 10 : 
  4645.           case 8 : 
  4646.           case 2 : 
  4647.           case 4 : 
  4648.           case 6 : 
  4649.             uppercase ( exbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  4650.             break ; 
  4651.           case 0 : 
  4652.           case 1 : 
  4653.           case 12 : 
  4654.             {
  4655.               uppercase ( exbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  4656.               while ( ( exbufxptr < exbufptr ) ) {
  4657.               
  4658.             exbuf [ exbufxptr - 1 ] = exbuf [ exbufxptr ] ; 
  4659.             incr ( exbufxptr ) ; 
  4660.               } 
  4661.               decr ( exbufxptr ) ; 
  4662.               while ( ( ( exbufptr < exbuflength ) && ( lexclass [ 
  4663.               exbuf [ exbufptr ] ] == 1 ) ) ) incr ( exbufptr ) ; 
  4664.               tmpptr = exbufptr ; 
  4665.               while ( ( tmpptr < exbuflength ) ) {
  4666.               
  4667.             exbuf [ tmpptr - ( exbufptr - exbufxptr ) ] = exbuf [ 
  4668.             tmpptr ] ; 
  4669.             incr ( tmpptr ) ; 
  4670.               } 
  4671.               exbuflength = tmpptr - ( exbufptr - exbufxptr ) ; 
  4672.               exbufptr = exbufxptr ; 
  4673.             } 
  4674.             break ; 
  4675.             default: 
  4676.             ; 
  4677.             break ; 
  4678.           } 
  4679.           break ; 
  4680.         case 3 : 
  4681.           ; 
  4682.           break ; 
  4683.           default: 
  4684.           caseconversionconfus () ; 
  4685.           break ; 
  4686.         } 
  4687.           } 
  4688.           exbufxptr = exbufptr ; 
  4689.           while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) && ( 
  4690.           exbuf [ exbufptr ] != 92 ) ) ) {
  4691.           
  4692.         if ( ( exbuf [ exbufptr ] == 125 ) ) 
  4693.         decr ( bracelevel ) ; 
  4694.         else if ( ( exbuf [ exbufptr ] == 123 ) ) 
  4695.         incr ( bracelevel ) ; 
  4696.         incr ( exbufptr ) ; 
  4697.           } 
  4698.           {
  4699.         switch ( ( conversiontype ) ) 
  4700.         {case 0 : 
  4701.         case 1 : 
  4702.           lowercase ( exbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  4703.           break ; 
  4704.         case 2 : 
  4705.           uppercase ( exbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  4706.           break ; 
  4707.         case 3 : 
  4708.           ; 
  4709.           break ; 
  4710.           default: 
  4711.           caseconversionconfus () ; 
  4712.           break ; 
  4713.         } 
  4714.           } 
  4715.         } 
  4716.         decr ( exbufptr ) ; 
  4717.       } 
  4718.       lab21: prevcolon = false ; 
  4719.     } 
  4720.     else if ( ( exbuf [ exbufptr ] == 125 ) ) 
  4721.     {
  4722.       decrbracelevel ( poplit2 ) ; 
  4723.       prevcolon = false ; 
  4724.     } 
  4725.     else if ( ( bracelevel == 0 ) ) 
  4726.     {
  4727.       switch ( ( conversiontype ) ) 
  4728.       {case 0 : 
  4729.         {
  4730.           if ( ( exbufptr == 0 ) ) 
  4731.           ; 
  4732.           else if ( ( ( prevcolon ) && ( lexclass [ exbuf [ exbufptr - 1 ] 
  4733.           ] == 1 ) ) ) 
  4734.           ; 
  4735.           else lowercase ( exbuf , exbufptr , 1 ) ; 
  4736.           if ( ( exbuf [ exbufptr ] == 58 ) ) 
  4737.           prevcolon = true ; 
  4738.           else if ( ( lexclass [ exbuf [ exbufptr ] ] != 1 ) ) 
  4739.           prevcolon = false ; 
  4740.         } 
  4741.         break ; 
  4742.       case 1 : 
  4743.         lowercase ( exbuf , exbufptr , 1 ) ; 
  4744.         break ; 
  4745.       case 2 : 
  4746.         uppercase ( exbuf , exbufptr , 1 ) ; 
  4747.         break ; 
  4748.       case 3 : 
  4749.         ; 
  4750.         break ; 
  4751.         default: 
  4752.         caseconversionconfus () ; 
  4753.         break ; 
  4754.       } 
  4755.     } 
  4756.     incr ( exbufptr ) ; 
  4757.       } 
  4758.       checkbracelevel ( poplit2 ) ; 
  4759.     } 
  4760.     addpoolbufandpush () ; 
  4761.   } 
  4762. void xchrtoint ( ) 
  4763. {poplitstk ( poplit1 , poptyp1 ) ; 
  4764.   if ( ( poptyp1 != 1 ) ) 
  4765.   {
  4766.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  4767.     pushlitstk ( 0 , 0 ) ; 
  4768.   } 
  4769.   else if ( ( ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) != 1 ) ) 
  4770.   {
  4771.     {
  4772.       (void) putc( '"' ,  logfile );
  4773.       (void) putc( '"' ,  stdout );
  4774.     } 
  4775.     printapoolstr ( poplit1 ) ; 
  4776.     {
  4777.       {
  4778.     (void) Fputs( logfile ,  "\" isn't a single character" ) ; 
  4779.     (void) Fputs( stdout ,  "\" isn't a single character" ) ; 
  4780.       } 
  4781.       bstexwarnprint () ; 
  4782.     } 
  4783.     pushlitstk ( 0 , 0 ) ; 
  4784.   } 
  4785.   else pushlitstk ( strpool [ strstart [ poplit1 ] ] , 0 ) ; 
  4786. void xcite ( ) 
  4787. {if ( ( ! messwithentries ) ) 
  4788.   bstcantmesswithentri () ; 
  4789.   else pushlitstk ( citelist [ citeptr ] , 1 ) ; 
  4790. void xduplicate ( ) 
  4791. {poplitstk ( poplit1 , poptyp1 ) ; 
  4792.   if ( ( poptyp1 != 1 ) ) 
  4793.   {
  4794.     pushlitstk ( poplit1 , poptyp1 ) ; 
  4795.     pushlitstk ( poplit1 , poptyp1 ) ; 
  4796.   } 
  4797.   else {
  4798.       
  4799.     {
  4800.       if ( ( litstack [ litstkptr ] >= cmdstrptr ) ) 
  4801.       {
  4802.     incr ( strptr ) ; 
  4803.     poolptr = strstart [ strptr ] ; 
  4804.       } 
  4805.       incr ( litstkptr ) ; 
  4806.     } 
  4807.     if ( ( poplit1 < cmdstrptr ) ) 
  4808.     pushlitstk ( poplit1 , poptyp1 ) ; 
  4809.     else {
  4810.     
  4811.       {
  4812.     if ( ( poolptr + ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) > 
  4813.     poolsize ) ) 
  4814.     pooloverflow () ; 
  4815.       } 
  4816.       spptr = strstart [ poplit1 ] ; 
  4817.       spend = strstart [ poplit1 + 1 ] ; 
  4818.       while ( ( spptr < spend ) ) {
  4819.       
  4820.     {
  4821.       strpool [ poolptr ] = strpool [ spptr ] ; 
  4822.       incr ( poolptr ) ; 
  4823.     } 
  4824.     incr ( spptr ) ; 
  4825.       } 
  4826.       pushlitstk ( makestring () , 1 ) ; 
  4827.     } 
  4828.   } 
  4829. void xempty ( ) 
  4830. {/* 10 */ poplitstk ( poplit1 , poptyp1 ) ; 
  4831.   switch ( ( poptyp1 ) ) 
  4832.   {case 1 : 
  4833.     {
  4834.       spptr = strstart [ poplit1 ] ; 
  4835.       spend = strstart [ poplit1 + 1 ] ; 
  4836.       while ( ( spptr < spend ) ) {
  4837.       
  4838.     if ( ( lexclass [ strpool [ spptr ] ] != 1 ) ) 
  4839.     {
  4840.       pushlitstk ( 0 , 0 ) ; 
  4841.       goto lab10 ; 
  4842.     } 
  4843.     incr ( spptr ) ; 
  4844.       } 
  4845.       pushlitstk ( 1 , 0 ) ; 
  4846.     } 
  4847.     break ; 
  4848.   case 3 : 
  4849.     pushlitstk ( 1 , 0 ) ; 
  4850.     break ; 
  4851.   case 4 : 
  4852.     pushlitstk ( 0 , 0 ) ; 
  4853.     break ; 
  4854.     default: 
  4855.     {
  4856.       printstklit ( poplit1 , poptyp1 ) ; 
  4857.       {
  4858.     {
  4859.       (void) Fputs( logfile ,  ", not a string or missing field," ) ; 
  4860.       (void) Fputs( stdout ,  ", not a string or missing field," ) ; 
  4861.     } 
  4862.     bstexwarnprint () ; 
  4863.       } 
  4864.       pushlitstk ( 0 , 0 ) ; 
  4865.     } 
  4866.     break ; 
  4867.   } 
  4868.   lab10: ; 
  4869. void xformatname ( ) 
  4870. {/* 16 17 52 */ poplitstk ( poplit1 , poptyp1 ) ; 
  4871.   poplitstk ( poplit2 , poptyp2 ) ; 
  4872.   poplitstk ( poplit3 , poptyp3 ) ; 
  4873.   if ( ( poptyp1 != 1 ) ) 
  4874.   {
  4875.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  4876.     pushlitstk ( snull , 1 ) ; 
  4877.   } 
  4878.   else if ( ( poptyp2 != 0 ) ) 
  4879.   {
  4880.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  4881.     pushlitstk ( snull , 1 ) ; 
  4882.   } 
  4883.   else if ( ( poptyp3 != 1 ) ) 
  4884.   {
  4885.     printwrongstklit ( poplit3 , poptyp3 , 1 ) ; 
  4886.     pushlitstk ( snull , 1 ) ; 
  4887.   } 
  4888.   else {
  4889.       
  4890.     exbuflength = 0 ; 
  4891.     addbufpool ( poplit3 ) ; 
  4892.     {
  4893.       exbufptr = 0 ; 
  4894.       numnames = 0 ; 
  4895.       while ( ( ( numnames < poplit2 ) && ( exbufptr < exbuflength ) ) ) {
  4896.       
  4897.     incr ( numnames ) ; 
  4898.     exbufxptr = exbufptr ; 
  4899.     namescanforand ( poplit3 ) ; 
  4900.       } 
  4901.       if ( ( exbufptr < exbuflength ) ) 
  4902.       exbufptr = exbufptr - 4 ; 
  4903.       if ( ( numnames < poplit2 ) ) 
  4904.       {
  4905.     if ( ( poplit2 == 1 ) ) 
  4906.     {
  4907.       (void) Fputs( logfile ,  "There is no name in \"" ) ; 
  4908.       (void) Fputs( stdout ,  "There is no name in \"" ) ; 
  4909.     } 
  4910.     else {
  4911.         
  4912.       (void) fprintf( logfile , "%s%ld%s",  "There aren't " , (long)poplit2 , " names in \"" ) ; 
  4913.       (void) fprintf( stdout , "%s%ld%s",  "There aren't " , (long)poplit2 , " names in \"" ) ; 
  4914.     } 
  4915.     printapoolstr ( poplit3 ) ; 
  4916.     {
  4917.       {
  4918.         (void) putc( '"' ,  logfile );
  4919.         (void) putc( '"' ,  stdout );
  4920.       } 
  4921.       bstexwarnprint () ; 
  4922.     } 
  4923.       } 
  4924.     } 
  4925.     {
  4926.       {
  4927.     while ( ( ( exbufxptr < exbufptr ) && ( lexclass [ exbuf [ exbufptr ] 
  4928.     ] == 1 ) && ( lexclass [ exbuf [ exbufptr ] ] == 4 ) ) ) incr ( 
  4929.     exbufxptr ) ; 
  4930.     while ( ( exbufptr > exbufxptr ) ) switch ( ( lexclass [ exbuf [ 
  4931.     exbufptr - 1 ] ] ) ) 
  4932.     {case 1 : 
  4933.     case 4 : 
  4934.       decr ( exbufptr ) ; 
  4935.       break ; 
  4936.       default: 
  4937.       if ( ( exbuf [ exbufptr - 1 ] == 44 ) ) 
  4938.       {
  4939.         {
  4940.           (void) fprintf( logfile , "%s%ld%s",  "Name " , (long)poplit2 , " in \"" ) ; 
  4941.           (void) fprintf( stdout , "%s%ld%s",  "Name " , (long)poplit2 , " in \"" ) ; 
  4942.         } 
  4943.         printapoolstr ( poplit3 ) ; 
  4944.         {
  4945.           (void) Fputs( logfile ,  "\" has a comma at the end" ) ; 
  4946.           (void) Fputs( stdout ,  "\" has a comma at the end" ) ; 
  4947.         } 
  4948.         bstexwarnprint () ; 
  4949.         decr ( exbufptr ) ; 
  4950.       } 
  4951.       else goto lab16 ; 
  4952.       break ; 
  4953.     } 
  4954.     lab16: ; 
  4955.       } 
  4956.       namebfptr = 0 ; 
  4957.       numcommas = 0 ; 
  4958.       numtokens = 0 ; 
  4959.       tokenstarting = true ; 
  4960.       while ( ( exbufxptr < exbufptr ) ) switch ( ( exbuf [ exbufxptr ] ) ) 
  4961.       {case 44 : 
  4962.     {
  4963.       if ( ( numcommas == 2 ) ) 
  4964.       {
  4965.         {
  4966.           (void) fprintf( logfile , "%s%ld%s",  "Too many commas in name " , (long)poplit2 ,               " of \"" ) ; 
  4967.           (void) fprintf( stdout , "%s%ld%s",  "Too many commas in name " , (long)poplit2 , " of \""               ) ; 
  4968.         } 
  4969.         printapoolstr ( poplit3 ) ; 
  4970.         {
  4971.           (void) putc( '"' ,  logfile );
  4972.           (void) putc( '"' ,  stdout );
  4973.         } 
  4974.         bstexwarnprint () ; 
  4975.       } 
  4976.       else {
  4977.           
  4978.         incr ( numcommas ) ; 
  4979.         if ( ( numcommas == 1 ) ) 
  4980.         comma1 = numtokens ; 
  4981.         else comma2 = numtokens ; 
  4982.         namesepchar [ numtokens ] = 44 ; 
  4983.       } 
  4984.       incr ( exbufxptr ) ; 
  4985.       tokenstarting = true ; 
  4986.     } 
  4987.     break ; 
  4988.       case 123 : 
  4989.     {
  4990.       incr ( bracelevel ) ; 
  4991.       if ( ( tokenstarting ) ) 
  4992.       {
  4993.         nametok [ numtokens ] = namebfptr ; 
  4994.         incr ( numtokens ) ; 
  4995.       } 
  4996.       svbuffer [ namebfptr ] = exbuf [ exbufxptr ] ; 
  4997.       incr ( namebfptr ) ; 
  4998.       incr ( exbufxptr ) ; 
  4999.       while ( ( ( bracelevel > 0 ) && ( exbufxptr < exbufptr ) ) ) {
  5000.           
  5001.         if ( ( exbuf [ exbufxptr ] == 125 ) ) 
  5002.         decr ( bracelevel ) ; 
  5003.         else if ( ( exbuf [ exbufxptr ] == 123 ) ) 
  5004.         incr ( bracelevel ) ; 
  5005.         svbuffer [ namebfptr ] = exbuf [ exbufxptr ] ; 
  5006.         incr ( namebfptr ) ; 
  5007.         incr ( exbufxptr ) ; 
  5008.       } 
  5009.       tokenstarting = false ; 
  5010.     } 
  5011.     break ; 
  5012.       case 125 : 
  5013.     {
  5014.       if ( ( tokenstarting ) ) 
  5015.       {
  5016.         nametok [ numtokens ] = namebfptr ; 
  5017.         incr ( numtokens ) ; 
  5018.       } 
  5019.       {
  5020.         (void) fprintf( logfile , "%s%ld%s",  "Name " , (long)poplit2 , " of \"" ) ; 
  5021.         (void) fprintf( stdout , "%s%ld%s",  "Name " , (long)poplit2 , " of \"" ) ; 
  5022.       } 
  5023.       printapoolstr ( poplit3 ) ; 
  5024.       {
  5025.         {
  5026.           (void) Fputs( logfile ,  "\" isn't brace balanced" ) ; 
  5027.           (void) Fputs( stdout ,  "\" isn't brace balanced" ) ; 
  5028.         } 
  5029.         bstexwarnprint () ; 
  5030.       } 
  5031.       incr ( exbufxptr ) ; 
  5032.       tokenstarting = false ; 
  5033.     } 
  5034.     break ; 
  5035.     default: 
  5036.     switch ( ( lexclass [ exbuf [ exbufxptr ] ] ) ) 
  5037.     {case 1 : 
  5038.       {
  5039.         if ( ( ! tokenstarting ) ) 
  5040.         namesepchar [ numtokens ] = 32 ; 
  5041.         incr ( exbufxptr ) ; 
  5042.         tokenstarting = true ; 
  5043.       } 
  5044.       break ; 
  5045.     case 4 : 
  5046.       {
  5047.         if ( ( ! tokenstarting ) ) 
  5048.         namesepchar [ numtokens ] = exbuf [ exbufxptr ] ; 
  5049.         incr ( exbufxptr ) ; 
  5050.         tokenstarting = true ; 
  5051.       } 
  5052.       break ; 
  5053.       default: 
  5054.       {
  5055.         if ( ( tokenstarting ) ) 
  5056.         {
  5057.           nametok [ numtokens ] = namebfptr ; 
  5058.           incr ( numtokens ) ; 
  5059.         } 
  5060.         svbuffer [ namebfptr ] = exbuf [ exbufxptr ] ; 
  5061.         incr ( namebfptr ) ; 
  5062.         incr ( exbufxptr ) ; 
  5063.         tokenstarting = false ; 
  5064.       } 
  5065.       break ; 
  5066.     } 
  5067.     break ; 
  5068.       } 
  5069.       nametok [ numtokens ] = namebfptr ; 
  5070.     } 
  5071.     {
  5072.       if ( ( numcommas == 0 ) ) 
  5073.       {
  5074.     firststart = 0 ; 
  5075.     lastend = numtokens ; 
  5076.     jrend = lastend ; 
  5077.     {
  5078.       vonstart = 0 ; 
  5079.       while ( ( vonstart < lastend - 1 ) ) {
  5080.           
  5081.         namebfptr = nametok [ vonstart ] ; 
  5082.         namebfxptr = nametok [ vonstart + 1 ] ; 
  5083.         if ( ( vontokenfound () ) ) 
  5084.         {
  5085.           vonnameendsandlastna () ; 
  5086.           goto lab52 ; 
  5087.         } 
  5088.         incr ( vonstart ) ; 
  5089.       } 
  5090.       while ( ( vonstart > 0 ) ) {
  5091.           
  5092.         if ( ( ( lexclass [ namesepchar [ vonstart ] ] != 4 ) || ( 
  5093.         namesepchar [ vonstart ] == 126 ) ) ) 
  5094.         goto lab17 ; 
  5095.         decr ( vonstart ) ; 
  5096.       } 
  5097.       lab17: vonend = vonstart ; 
  5098.       lab52: firstend = vonstart ; 
  5099.     } 
  5100.       } 
  5101.       else if ( ( numcommas == 1 ) ) 
  5102.       {
  5103.     vonstart = 0 ; 
  5104.     lastend = comma1 ; 
  5105.     jrend = lastend ; 
  5106.     firststart = jrend ; 
  5107.     firstend = numtokens ; 
  5108.     vonnameendsandlastna () ; 
  5109.       } 
  5110.       else if ( ( numcommas == 2 ) ) 
  5111.       {
  5112.     vonstart = 0 ; 
  5113.     lastend = comma1 ; 
  5114.     jrend = comma2 ; 
  5115.     firststart = jrend ; 
  5116.     firstend = numtokens ; 
  5117.     vonnameendsandlastna () ; 
  5118.       } 
  5119.       else {
  5120.       
  5121.     {
  5122.       (void) Fputs( logfile ,  "Illegal number of comma,s" ) ; 
  5123.       (void) Fputs( stdout ,  "Illegal number of comma,s" ) ; 
  5124.     } 
  5125.     printconfusion () ; 
  5126.     longjmp(jmp9998,1) ; 
  5127.       } 
  5128.     } 
  5129.     exbuflength = 0 ; 
  5130.     addbufpool ( poplit1 ) ; 
  5131.     figureouttheformatte () ; 
  5132.     addpoolbufandpush () ; 
  5133.   } 
  5134. void xinttochr ( ) 
  5135. {poplitstk ( poplit1 , poptyp1 ) ; 
  5136.   if ( ( poptyp1 != 0 ) ) 
  5137.   {
  5138.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  5139.     pushlitstk ( snull , 1 ) ; 
  5140.   } 
  5141.   else if ( ( ( poplit1 < 0 ) || ( poplit1 > 127 ) ) ) 
  5142.   {
  5143.     {
  5144.       {
  5145.     (void) fprintf( logfile , "%ld%s",  (long)poplit1 , " isn't valid ASCII" ) ; 
  5146.     (void) fprintf( stdout , "%ld%s",  (long)poplit1 , " isn't valid ASCII" ) ; 
  5147.       } 
  5148.       bstexwarnprint () ; 
  5149.     } 
  5150.     pushlitstk ( snull , 1 ) ; 
  5151.   } 
  5152.   else {
  5153.       
  5154.     {
  5155.       if ( ( poolptr + 1 > poolsize ) ) 
  5156.       pooloverflow () ; 
  5157.     } 
  5158.     {
  5159.       strpool [ poolptr ] = poplit1 ; 
  5160.       incr ( poolptr ) ; 
  5161.     } 
  5162.     pushlitstk ( makestring () , 1 ) ; 
  5163.   } 
  5164. void xinttostr ( ) 
  5165. {poplitstk ( poplit1 , poptyp1 ) ; 
  5166.   if ( ( poptyp1 != 0 ) ) 
  5167.   {
  5168.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  5169.     pushlitstk ( snull , 1 ) ; 
  5170.   } 
  5171.   else {
  5172.       
  5173.     inttoASCII ( poplit1 , exbuf , 0 , exbuflength ) ; 
  5174.     addpoolbufandpush () ; 
  5175.   } 
  5176. void xmissing ( ) 
  5177. {poplitstk ( poplit1 , poptyp1 ) ; 
  5178.   if ( ( ! messwithentries ) ) 
  5179.   bstcantmesswithentri () ; 
  5180.   else if ( ( ( poptyp1 != 1 ) && ( poptyp1 != 3 ) ) ) 
  5181.   {
  5182.     if ( ( poptyp1 != 4 ) ) 
  5183.     {
  5184.       printstklit ( poplit1 , poptyp1 ) ; 
  5185.       {
  5186.     {
  5187.       (void) Fputs( logfile ,  ", not a string or missing field," ) ; 
  5188.       (void) Fputs( stdout ,  ", not a string or missing field," ) ; 
  5189.     } 
  5190.     bstexwarnprint () ; 
  5191.       } 
  5192.     } 
  5193.     pushlitstk ( 0 , 0 ) ; 
  5194.   } 
  5195.   else if ( ( poptyp1 == 3 ) ) 
  5196.   pushlitstk ( 1 , 0 ) ; 
  5197.   else pushlitstk ( 0 , 0 ) ; 
  5198. void xnumnames ( ) 
  5199. {poplitstk ( poplit1 , poptyp1 ) ; 
  5200.   if ( ( poptyp1 != 1 ) ) 
  5201.   {
  5202.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  5203.     pushlitstk ( 0 , 0 ) ; 
  5204.   } 
  5205.   else {
  5206.       
  5207.     exbuflength = 0 ; 
  5208.     addbufpool ( poplit1 ) ; 
  5209.     {
  5210.       exbufptr = 0 ; 
  5211.       numnames = 0 ; 
  5212.       while ( ( exbufptr < exbuflength ) ) {
  5213.       
  5214.     namescanforand ( poplit1 ) ; 
  5215.     incr ( numnames ) ; 
  5216.       } 
  5217.     } 
  5218.     pushlitstk ( numnames , 0 ) ; 
  5219.   } 
  5220. void xpreamble ( ) 
  5221. {exbuflength = 0 ; 
  5222.   preambleptr = 0 ; 
  5223.   while ( ( preambleptr < numpreamblestrings ) ) {
  5224.       
  5225.     addbufpool ( spreamble [ preambleptr ] ) ; 
  5226.     incr ( preambleptr ) ; 
  5227.   } 
  5228.   addpoolbufandpush () ; 
  5229. void xpurify ( ) 
  5230. {poplitstk ( poplit1 , poptyp1 ) ; 
  5231.   if ( ( poptyp1 != 1 ) ) 
  5232.   {
  5233.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  5234.     pushlitstk ( snull , 1 ) ; 
  5235.   } 
  5236.   else {
  5237.       
  5238.     exbuflength = 0 ; 
  5239.     addbufpool ( poplit1 ) ; 
  5240.     {
  5241.       bracelevel = 0 ; 
  5242.       exbufxptr = 0 ; 
  5243.       exbufptr = 0 ; 
  5244.       while ( ( exbufptr < exbuflength ) ) {
  5245.       
  5246.     switch ( ( lexclass [ exbuf [ exbufptr ] ] ) ) 
  5247.     {case 1 : 
  5248.     case 4 : 
  5249.       {
  5250.         exbuf [ exbufxptr ] = 32 ; 
  5251.         incr ( exbufxptr ) ; 
  5252.       } 
  5253.       break ; 
  5254.     case 2 : 
  5255.     case 3 : 
  5256.       {
  5257.         exbuf [ exbufxptr ] = exbuf [ exbufptr ] ; 
  5258.         incr ( exbufxptr ) ; 
  5259.       } 
  5260.       break ; 
  5261.       default: 
  5262.       if ( ( exbuf [ exbufptr ] == 123 ) ) 
  5263.       {
  5264.         incr ( bracelevel ) ; 
  5265.         if ( ( ( bracelevel == 1 ) && ( exbufptr + 1 < exbuflength ) ) ) 
  5266.         if ( ( exbuf [ exbufptr + 1 ] == 92 ) ) 
  5267.         {
  5268.           incr ( exbufptr ) ; 
  5269.           while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) ) ) {
  5270.           
  5271.         incr ( exbufptr ) ; 
  5272.         exbufyptr = exbufptr ; 
  5273.         while ( ( ( exbufptr < exbuflength ) && ( lexclass [ exbuf [ 
  5274.         exbufptr ] ] == 2 ) ) ) incr ( exbufptr ) ; 
  5275.         controlseqloc = strlookup ( exbuf , exbufyptr , exbufptr - 
  5276.         exbufyptr , 14 , false ) ; 
  5277.         if ( ( hashfound ) ) 
  5278.         {
  5279.           exbuf [ exbufxptr ] = exbuf [ exbufyptr ] ; 
  5280.           incr ( exbufxptr ) ; 
  5281.           switch ( ( ilkinfo [ controlseqloc ] ) ) 
  5282.           {case 2 : 
  5283.           case 3 : 
  5284.           case 4 : 
  5285.           case 5 : 
  5286.           case 12 : 
  5287.             {
  5288.               exbuf [ exbufxptr ] = exbuf [ exbufyptr + 1 ] ; 
  5289.               incr ( exbufxptr ) ; 
  5290.             } 
  5291.             break ; 
  5292.             default: 
  5293.             ; 
  5294.             break ; 
  5295.           } 
  5296.         } 
  5297.         while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) && 
  5298.         ( exbuf [ exbufptr ] != 92 ) ) ) {
  5299.             
  5300.           switch ( ( lexclass [ exbuf [ exbufptr ] ] ) ) 
  5301.           {case 2 : 
  5302.           case 3 : 
  5303.             {
  5304.               exbuf [ exbufxptr ] = exbuf [ exbufptr ] ; 
  5305.               incr ( exbufxptr ) ; 
  5306.             } 
  5307.             break ; 
  5308.             default: 
  5309.             if ( ( exbuf [ exbufptr ] == 125 ) ) 
  5310.             decr ( bracelevel ) ; 
  5311.             else if ( ( exbuf [ exbufptr ] == 123 ) ) 
  5312.             incr ( bracelevel ) ; 
  5313.             break ; 
  5314.           } 
  5315.           incr ( exbufptr ) ; 
  5316.         } 
  5317.           } 
  5318.           decr ( exbufptr ) ; 
  5319.         } 
  5320.       } 
  5321.       else if ( ( exbuf [ exbufptr ] == 125 ) ) 
  5322.       if ( ( bracelevel > 0 ) ) 
  5323.       decr ( bracelevel ) ; 
  5324.       break ; 
  5325.     } 
  5326.     incr ( exbufptr ) ; 
  5327.       } 
  5328.       exbuflength = exbufxptr ; 
  5329.     } 
  5330.     addpoolbufandpush () ; 
  5331.   } 
  5332. void xquote ( ) 
  5333. {{
  5334.     
  5335.     if ( ( poolptr + 1 > poolsize ) ) 
  5336.     pooloverflow () ; 
  5337.   } 
  5338.   {
  5339.     strpool [ poolptr ] = 34 ; 
  5340.     incr ( poolptr ) ; 
  5341.   } 
  5342.   pushlitstk ( makestring () , 1 ) ; 
  5343. void xsubstring ( ) 
  5344. {/* 10 */ poplitstk ( poplit1 , poptyp1 ) ; 
  5345.   poplitstk ( poplit2 , poptyp2 ) ; 
  5346.   poplitstk ( poplit3 , poptyp3 ) ; 
  5347.   if ( ( poptyp1 != 0 ) ) 
  5348.   {
  5349.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  5350.     pushlitstk ( snull , 1 ) ; 
  5351.   } 
  5352.   else if ( ( poptyp2 != 0 ) ) 
  5353.   {
  5354.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  5355.     pushlitstk ( snull , 1 ) ; 
  5356.   } 
  5357.   else if ( ( poptyp3 != 1 ) ) 
  5358.   {
  5359.     printwrongstklit ( poplit3 , poptyp3 , 1 ) ; 
  5360.     pushlitstk ( snull , 1 ) ; 
  5361.   } 
  5362.   else {
  5363.       
  5364.     splength = ( strstart [ poplit3 + 1 ] - strstart [ poplit3 ] ) ; 
  5365.     if ( ( poplit1 >= splength ) ) 
  5366.     if ( ( ( poplit2 == 1 ) || ( poplit2 == -1 ) ) ) 
  5367.     {
  5368.       {
  5369.     if ( ( litstack [ litstkptr ] >= cmdstrptr ) ) 
  5370.     {
  5371.       incr ( strptr ) ; 
  5372.       poolptr = strstart [ strptr ] ; 
  5373.     } 
  5374.     incr ( litstkptr ) ; 
  5375.       } 
  5376.       goto lab10 ; 
  5377.     } 
  5378.     if ( ( ( poplit1 <= 0 ) || ( poplit2 == 0 ) || ( poplit2 > splength ) || ( 
  5379.     poplit2 < - (integer) splength ) ) ) 
  5380.     {
  5381.       pushlitstk ( snull , 1 ) ; 
  5382.       goto lab10 ; 
  5383.     } 
  5384.     else {
  5385.     
  5386.       if ( ( poplit2 > 0 ) ) 
  5387.       {
  5388.     if ( ( poplit1 > splength - ( poplit2 - 1 ) ) ) 
  5389.     poplit1 = splength - ( poplit2 - 1 ) ; 
  5390.     spptr = strstart [ poplit3 ] + ( poplit2 - 1 ) ; 
  5391.     spend = spptr + poplit1 ; 
  5392.     if ( ( poplit2 == 1 ) ) 
  5393.     if ( ( poplit3 >= cmdstrptr ) ) 
  5394.     {
  5395.       strstart [ poplit3 + 1 ] = spend ; 
  5396.       {
  5397.         incr ( strptr ) ; 
  5398.         poolptr = strstart [ strptr ] ; 
  5399.       } 
  5400.       incr ( litstkptr ) ; 
  5401.       goto lab10 ; 
  5402.     } 
  5403.       } 
  5404.       else {
  5405.       
  5406.     poplit2 = - (integer) poplit2 ; 
  5407.     if ( ( poplit1 > splength - ( poplit2 - 1 ) ) ) 
  5408.     poplit1 = splength - ( poplit2 - 1 ) ; 
  5409.     spend = strstart [ poplit3 + 1 ] - ( poplit2 - 1 ) ; 
  5410.     spptr = spend - poplit1 ; 
  5411.       } 
  5412.       while ( ( spptr < spend ) ) {
  5413.       
  5414.     {
  5415.       strpool [ poolptr ] = strpool [ spptr ] ; 
  5416.       incr ( poolptr ) ; 
  5417.     } 
  5418.     incr ( spptr ) ; 
  5419.       } 
  5420.       pushlitstk ( makestring () , 1 ) ; 
  5421.     } 
  5422.   } 
  5423.   lab10: ; 
  5424. void xswap ( ) 
  5425. {poplitstk ( poplit1 , poptyp1 ) ; 
  5426.   poplitstk ( poplit2 , poptyp2 ) ; 
  5427.   if ( ( ( poptyp1 != 1 ) || ( poplit1 < cmdstrptr ) ) ) 
  5428.   {
  5429.     pushlitstk ( poplit1 , poptyp1 ) ; 
  5430.     if ( ( ( poptyp2 == 1 ) && ( poplit2 >= cmdstrptr ) ) ) 
  5431.     {
  5432.       incr ( strptr ) ; 
  5433.       poolptr = strstart [ strptr ] ; 
  5434.     } 
  5435.     pushlitstk ( poplit2 , poptyp2 ) ; 
  5436.   } 
  5437.   else if ( ( ( poptyp2 != 1 ) || ( poplit2 < cmdstrptr ) ) ) 
  5438.   {
  5439.     {
  5440.       incr ( strptr ) ; 
  5441.       poolptr = strstart [ strptr ] ; 
  5442.     } 
  5443.     pushlitstk ( poplit1 , 1 ) ; 
  5444.     pushlitstk ( poplit2 , poptyp2 ) ; 
  5445.   } 
  5446.   else {
  5447.       
  5448.     exbuflength = 0 ; 
  5449.     addbufpool ( poplit2 ) ; 
  5450.     spptr = strstart [ poplit1 ] ; 
  5451.     spend = strstart [ poplit1 + 1 ] ; 
  5452.     while ( ( spptr < spend ) ) {
  5453.     
  5454.       {
  5455.     strpool [ poolptr ] = strpool [ spptr ] ; 
  5456.     incr ( poolptr ) ; 
  5457.       } 
  5458.       incr ( spptr ) ; 
  5459.     } 
  5460.     pushlitstk ( makestring () , 1 ) ; 
  5461.     addpoolbufandpush () ; 
  5462.   } 
  5463. void xtextlength ( ) 
  5464. {poplitstk ( poplit1 , poptyp1 ) ; 
  5465.   if ( ( poptyp1 != 1 ) ) 
  5466.   {
  5467.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  5468.     pushlitstk ( snull , 1 ) ; 
  5469.   } 
  5470.   else {
  5471.       
  5472.     numtextchars = 0 ; 
  5473.     {
  5474.       spptr = strstart [ poplit1 ] ; 
  5475.       spend = strstart [ poplit1 + 1 ] ; 
  5476.       spbracelevel = 0 ; 
  5477.       while ( ( spptr < spend ) ) {
  5478.       
  5479.     incr ( spptr ) ; 
  5480.     if ( ( strpool [ spptr - 1 ] == 123 ) ) 
  5481.     {
  5482.       incr ( spbracelevel ) ; 
  5483.       if ( ( ( spbracelevel == 1 ) && ( spptr < spend ) ) ) 
  5484.       if ( ( strpool [ spptr ] == 92 ) ) 
  5485.       {
  5486.         incr ( spptr ) ; 
  5487.         while ( ( ( spptr < spend ) && ( spbracelevel > 0 ) ) ) {
  5488.         
  5489.           if ( ( strpool [ spptr ] == 125 ) ) 
  5490.           decr ( spbracelevel ) ; 
  5491.           else if ( ( strpool [ spptr ] == 123 ) ) 
  5492.           incr ( spbracelevel ) ; 
  5493.           incr ( spptr ) ; 
  5494.         } 
  5495.         incr ( numtextchars ) ; 
  5496.       } 
  5497.     } 
  5498.     else if ( ( strpool [ spptr - 1 ] == 125 ) ) 
  5499.     {
  5500.       if ( ( spbracelevel > 0 ) ) 
  5501.       decr ( spbracelevel ) ; 
  5502.     } 
  5503.     else incr ( numtextchars ) ; 
  5504.       } 
  5505.     } 
  5506.     pushlitstk ( numtextchars , 0 ) ; 
  5507.   } 
  5508. void xtextprefix ( ) 
  5509. {/* 10 */ poplitstk ( poplit1 , poptyp1 ) ; 
  5510.   poplitstk ( poplit2 , poptyp2 ) ; 
  5511.   if ( ( poptyp1 != 0 ) ) 
  5512.   {
  5513.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  5514.     pushlitstk ( snull , 1 ) ; 
  5515.   } 
  5516.   else if ( ( poptyp2 != 1 ) ) 
  5517.   {
  5518.     printwrongstklit ( poplit2 , poptyp2 , 1 ) ; 
  5519.     pushlitstk ( snull , 1 ) ; 
  5520.   } 
  5521.   else if ( ( poplit1 <= 0 ) ) 
  5522.   {
  5523.     pushlitstk ( snull , 1 ) ; 
  5524.     goto lab10 ; 
  5525.   } 
  5526.   else {
  5527.       
  5528.     spptr = strstart [ poplit2 ] ; 
  5529.     spend = strstart [ poplit2 + 1 ] ; 
  5530.     {
  5531.       numtextchars = 0 ; 
  5532.       spbracelevel = 0 ; 
  5533.       spxptr1 = spptr ; 
  5534.       while ( ( ( spxptr1 < spend ) && ( numtextchars < poplit1 ) ) ) {
  5535.       
  5536.     incr ( spxptr1 ) ; 
  5537.     if ( ( strpool [ spxptr1 - 1 ] == 123 ) ) 
  5538.     {
  5539.       incr ( spbracelevel ) ; 
  5540.       if ( ( ( spbracelevel == 1 ) && ( spxptr1 < spend ) ) ) 
  5541.       if ( ( strpool [ spxptr1 ] == 92 ) ) 
  5542.       {
  5543.         incr ( spxptr1 ) ; 
  5544.         while ( ( ( spxptr1 < spend ) && ( spbracelevel > 0 ) ) ) {
  5545.         
  5546.           if ( ( strpool [ spxptr1 ] == 125 ) ) 
  5547.           decr ( spbracelevel ) ; 
  5548.           else if ( ( strpool [ spxptr1 ] == 123 ) ) 
  5549.           incr ( spbracelevel ) ; 
  5550.           incr ( spxptr1 ) ; 
  5551.         } 
  5552.         incr ( numtextchars ) ; 
  5553.       } 
  5554.     } 
  5555.     else if ( ( strpool [ spxptr1 - 1 ] == 125 ) ) 
  5556.     {
  5557.       if ( ( spbracelevel > 0 ) ) 
  5558.       decr ( spbracelevel ) ; 
  5559.     } 
  5560.     else incr ( numtextchars ) ; 
  5561.       } 
  5562.       spend = spxptr1 ; 
  5563.     } 
  5564.     if ( ( poplit2 >= cmdstrptr ) ) 
  5565.     poolptr = spend ; 
  5566.     else while ( ( spptr < spend ) ) {
  5567.     
  5568.       {
  5569.     strpool [ poolptr ] = strpool [ spptr ] ; 
  5570.     incr ( poolptr ) ; 
  5571.       } 
  5572.       incr ( spptr ) ; 
  5573.     } 
  5574.     while ( ( spbracelevel > 0 ) ) {
  5575.     
  5576.       {
  5577.     strpool [ poolptr ] = 125 ; 
  5578.     incr ( poolptr ) ; 
  5579.       } 
  5580.       decr ( spbracelevel ) ; 
  5581.     } 
  5582.     pushlitstk ( makestring () , 1 ) ; 
  5583.   } 
  5584.   lab10: ; 
  5585. void xtype ( ) 
  5586. {if ( ( ! messwithentries ) ) 
  5587.   bstcantmesswithentri () ; 
  5588.   else if ( ( ( typelist [ citeptr ] == 5001 ) || ( typelist [ citeptr ] == 0 
  5589.   ) ) ) 
  5590.   pushlitstk ( snull , 1 ) ; 
  5591.   else pushlitstk ( hashtext [ typelist [ citeptr ] ] , 1 ) ; 
  5592. void xwarning ( ) 
  5593. {poplitstk ( poplit1 , poptyp1 ) ; 
  5594.   if ( ( poptyp1 != 1 ) ) 
  5595.   printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  5596.   else {
  5597.       
  5598.     {
  5599.       (void) Fputs( logfile ,  "Warning--" ) ; 
  5600.       (void) Fputs( stdout ,  "Warning--" ) ; 
  5601.     } 
  5602.     printlit ( poplit1 , poptyp1 ) ; 
  5603.     markwarning () ; 
  5604.   } 
  5605. void xwidth ( ) 
  5606. {poplitstk ( poplit1 , poptyp1 ) ; 
  5607.   if ( ( poptyp1 != 1 ) ) 
  5608.   {
  5609.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  5610.     pushlitstk ( 0 , 0 ) ; 
  5611.   } 
  5612.   else {
  5613.       
  5614.     exbuflength = 0 ; 
  5615.     addbufpool ( poplit1 ) ; 
  5616.     stringwidth = 0 ; 
  5617.     {
  5618.       bracelevel = 0 ; 
  5619.       exbufptr = 0 ; 
  5620.       while ( ( exbufptr < exbuflength ) ) {
  5621.       
  5622.     if ( ( exbuf [ exbufptr ] == 123 ) ) 
  5623.     {
  5624.       incr ( bracelevel ) ; 
  5625.       if ( ( ( bracelevel == 1 ) && ( exbufptr + 1 < exbuflength ) ) ) 
  5626.       if ( ( exbuf [ exbufptr + 1 ] == 92 ) ) 
  5627.       {
  5628.         incr ( exbufptr ) ; 
  5629.         while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) ) ) {
  5630.         
  5631.           incr ( exbufptr ) ; 
  5632.           exbufxptr = exbufptr ; 
  5633.           while ( ( ( exbufptr < exbuflength ) && ( lexclass [ exbuf [ 
  5634.           exbufptr ] ] == 2 ) ) ) incr ( exbufptr ) ; 
  5635.           if ( ( ( exbufptr < exbuflength ) && ( exbufptr == exbufxptr ) ) 
  5636.           ) 
  5637.           incr ( exbufptr ) ; 
  5638.           else {
  5639.           
  5640.         controlseqloc = strlookup ( exbuf , exbufxptr , exbufptr - 
  5641.         exbufxptr , 14 , false ) ; 
  5642.         if ( ( hashfound ) ) 
  5643.         {
  5644.           switch ( ( ilkinfo [ controlseqloc ] ) ) 
  5645.           {case 12 : 
  5646.             stringwidth = stringwidth + 500 ; 
  5647.             break ; 
  5648.           case 4 : 
  5649.             stringwidth = stringwidth + 722 ; 
  5650.             break ; 
  5651.           case 2 : 
  5652.             stringwidth = stringwidth + 778 ; 
  5653.             break ; 
  5654.           case 5 : 
  5655.             stringwidth = stringwidth + 903 ; 
  5656.             break ; 
  5657.           case 3 : 
  5658.             stringwidth = stringwidth + 1014 ; 
  5659.             break ; 
  5660.             default: 
  5661.             stringwidth = stringwidth + charwidth [ exbuf [ exbufxptr 
  5662.             ] ] ; 
  5663.             break ; 
  5664.           } 
  5665.         } 
  5666.           } 
  5667.           while ( ( ( exbufptr < exbuflength ) && ( lexclass [ exbuf [ 
  5668.           exbufptr ] ] == 1 ) ) ) incr ( exbufptr ) ; 
  5669.           while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) && ( 
  5670.           exbuf [ exbufptr ] != 92 ) ) ) {
  5671.           
  5672.         if ( ( exbuf [ exbufptr ] == 125 ) ) 
  5673.         decr ( bracelevel ) ; 
  5674.         else if ( ( exbuf [ exbufptr ] == 123 ) ) 
  5675.         incr ( bracelevel ) ; 
  5676.         else stringwidth = stringwidth + charwidth [ exbuf [ exbufptr 
  5677.         ] ] ; 
  5678.         incr ( exbufptr ) ; 
  5679.           } 
  5680.         } 
  5681.         decr ( exbufptr ) ; 
  5682.       } 
  5683.       else stringwidth = stringwidth + charwidth [ 123 ] ; 
  5684.       else stringwidth = stringwidth + charwidth [ 123 ] ; 
  5685.     } 
  5686.     else if ( ( exbuf [ exbufptr ] == 125 ) ) 
  5687.     {
  5688.       decrbracelevel ( poplit1 ) ; 
  5689.       stringwidth = stringwidth + charwidth [ 125 ] ; 
  5690.     } 
  5691.     else stringwidth = stringwidth + charwidth [ exbuf [ exbufptr ] ] ; 
  5692.     incr ( exbufptr ) ; 
  5693.       } 
  5694.       checkbracelevel ( poplit1 ) ; 
  5695.     } 
  5696.     pushlitstk ( stringwidth , 0 ) ; 
  5697.   } 
  5698. void xwrite ( ) 
  5699. {poplitstk ( poplit1 , poptyp1 ) ; 
  5700.   if ( ( poptyp1 != 1 ) ) 
  5701.   printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  5702.   else addoutpool ( poplit1 ) ; 
  5703. void zexecutefn ( exfnloc ) 
  5704. hashloc exfnloc ; 
  5705. {/* 51 */ integer rpoplt1, rpoplt2  ; 
  5706.   stktype rpoptp1, rpoptp2  ; 
  5707.   wizfnloc wizptr  ; 
  5708.     ;
  5709. #ifdef TRACE
  5710.   {
  5711.     (void) Fputs( logfile ,  "execute_fn `" ) ; 
  5712.   } 
  5713.   {
  5714.     outpoolstr ( logfile , hashtext [ exfnloc ] ) ; 
  5715.   } 
  5716.   {
  5717.     (void) fprintf( logfile , "%c\n",  '\'' ) ; 
  5718.   } 
  5719. #endif /* TRACE */
  5720.   switch ( ( fntype [ exfnloc ] ) ) 
  5721.   {case 0 : 
  5722.     {
  5723.     ;
  5724. #ifdef STAT
  5725.       incr ( executioncount [ ilkinfo [ exfnloc ] ] ) ; 
  5726. #endif /* STAT */
  5727.       switch ( ( ilkinfo [ exfnloc ] ) ) 
  5728.       {case 0 : 
  5729.     xequals () ; 
  5730.     break ; 
  5731.       case 1 : 
  5732.     xgreaterthan () ; 
  5733.     break ; 
  5734.       case 2 : 
  5735.     xlessthan () ; 
  5736.     break ; 
  5737.       case 3 : 
  5738.     xplus () ; 
  5739.     break ; 
  5740.       case 4 : 
  5741.     xminus () ; 
  5742.     break ; 
  5743.       case 5 : 
  5744.     xconcatenate () ; 
  5745.     break ; 
  5746.       case 6 : 
  5747.     xgets () ; 
  5748.     break ; 
  5749.       case 7 : 
  5750.     xaddperiod () ; 
  5751.     break ; 
  5752.       case 8 : 
  5753.     {
  5754.       if ( ( ! messwithentries ) ) 
  5755.       bstcantmesswithentri () ; 
  5756.       else if ( ( typelist [ citeptr ] == 5001 ) ) 
  5757.       executefn ( bdefault ) ; 
  5758.       else if ( ( typelist [ citeptr ] == 0 ) ) 
  5759.       ; 
  5760.       else executefn ( typelist [ citeptr ] ) ; 
  5761.     } 
  5762.     break ; 
  5763.       case 9 : 
  5764.     xchangecase () ; 
  5765.     break ; 
  5766.       case 10 : 
  5767.     xchrtoint () ; 
  5768.     break ; 
  5769.       case 11 : 
  5770.     xcite () ; 
  5771.     break ; 
  5772.       case 12 : 
  5773.     xduplicate () ; 
  5774.     break ; 
  5775.       case 13 : 
  5776.     xempty () ; 
  5777.     break ; 
  5778.       case 14 : 
  5779.     xformatname () ; 
  5780.     break ; 
  5781.       case 15 : 
  5782.     {
  5783.       poplitstk ( poplit1 , poptyp1 ) ; 
  5784.       poplitstk ( poplit2 , poptyp2 ) ; 
  5785.       poplitstk ( poplit3 , poptyp3 ) ; 
  5786.       if ( ( poptyp1 != 2 ) ) 
  5787.       printwrongstklit ( poplit1 , poptyp1 , 2 ) ; 
  5788.       else if ( ( poptyp2 != 2 ) ) 
  5789.       printwrongstklit ( poplit2 , poptyp2 , 2 ) ; 
  5790.       else if ( ( poptyp3 != 0 ) ) 
  5791.       printwrongstklit ( poplit3 , poptyp3 , 0 ) ; 
  5792.       else if ( ( poplit3 > 0 ) ) 
  5793.       executefn ( poplit2 ) ; 
  5794.       else executefn ( poplit1 ) ; 
  5795.     } 
  5796.     break ; 
  5797.       case 16 : 
  5798.     xinttochr () ; 
  5799.     break ; 
  5800.       case 17 : 
  5801.     xinttostr () ; 
  5802.     break ; 
  5803.       case 18 : 
  5804.     xmissing () ; 
  5805.     break ; 
  5806.       case 19 : 
  5807.     {
  5808.       outputbblline () ; 
  5809.     } 
  5810.     break ; 
  5811.       case 20 : 
  5812.     xnumnames () ; 
  5813.     break ; 
  5814.       case 21 : 
  5815.     {
  5816.       poplitstk ( poplit1 , poptyp1 ) ; 
  5817.     } 
  5818.     break ; 
  5819.       case 22 : 
  5820.     xpreamble () ; 
  5821.     break ; 
  5822.       case 23 : 
  5823.     xpurify () ; 
  5824.     break ; 
  5825.       case 24 : 
  5826.     xquote () ; 
  5827.     break ; 
  5828.       case 25 : 
  5829.     {
  5830.       ; 
  5831.     } 
  5832.     break ; 
  5833.       case 26 : 
  5834.     {
  5835.       popwholestack () ; 
  5836.     } 
  5837.     break ; 
  5838.       case 27 : 
  5839.     xsubstring () ; 
  5840.     break ; 
  5841.       case 28 : 
  5842.     xswap () ; 
  5843.     break ; 
  5844.       case 29 : 
  5845.     xtextlength () ; 
  5846.     break ; 
  5847.       case 30 : 
  5848.     xtextprefix () ; 
  5849.     break ; 
  5850.       case 31 : 
  5851.     {
  5852.       poptopandprint () ; 
  5853.     } 
  5854.     break ; 
  5855.       case 32 : 
  5856.     xtype () ; 
  5857.     break ; 
  5858.       case 33 : 
  5859.     xwarning () ; 
  5860.     break ; 
  5861.       case 34 : 
  5862.     {
  5863.       poplitstk ( rpoplt1 , rpoptp1 ) ; 
  5864.       poplitstk ( rpoplt2 , rpoptp2 ) ; 
  5865.       if ( ( rpoptp1 != 2 ) ) 
  5866.       printwrongstklit ( rpoplt1 , rpoptp1 , 2 ) ; 
  5867.       else if ( ( rpoptp2 != 2 ) ) 
  5868.       printwrongstklit ( rpoplt2 , rpoptp2 , 2 ) ; 
  5869.       else while ( true ) {
  5870.           
  5871.         executefn ( rpoplt2 ) ; 
  5872.         poplitstk ( poplit1 , poptyp1 ) ; 
  5873.         if ( ( poptyp1 != 0 ) ) 
  5874.         {
  5875.           printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  5876.           goto lab51 ; 
  5877.         } 
  5878.         else if ( ( poplit1 > 0 ) ) 
  5879.         executefn ( rpoplt1 ) ; 
  5880.         else goto lab51 ; 
  5881.       } 
  5882.       lab51: ; 
  5883.     } 
  5884.     break ; 
  5885.       case 35 : 
  5886.     xwidth () ; 
  5887.     break ; 
  5888.       case 36 : 
  5889.     xwrite () ; 
  5890.     break ; 
  5891.     default: 
  5892.     {
  5893.       {
  5894.         (void) Fputs( logfile ,  "Unknown built-in function" ) ; 
  5895.         (void) Fputs( stdout ,  "Unknown built-in function" ) ; 
  5896.       } 
  5897.       printconfusion () ; 
  5898.       longjmp(jmp9998,1) ; 
  5899.     } 
  5900.     break ; 
  5901.       } 
  5902.     } 
  5903.     break ; 
  5904.   case 1 : 
  5905.     {
  5906.       wizptr = ilkinfo [ exfnloc ] ; 
  5907.       while ( ( wizfunctions [ wizptr ] != 5001 ) ) {
  5908.       
  5909.     if ( ( wizfunctions [ wizptr ] != 0 ) ) 
  5910.     executefn ( wizfunctions [ wizptr ] ) ; 
  5911.     else {
  5912.         
  5913.       incr ( wizptr ) ; 
  5914.       pushlitstk ( wizfunctions [ wizptr ] , 2 ) ; 
  5915.     } 
  5916.     incr ( wizptr ) ; 
  5917.       } 
  5918.     } 
  5919.     break ; 
  5920.   case 2 : 
  5921.     pushlitstk ( ilkinfo [ exfnloc ] , 0 ) ; 
  5922.     break ; 
  5923.   case 3 : 
  5924.     pushlitstk ( hashtext [ exfnloc ] , 1 ) ; 
  5925.     break ; 
  5926.   case 4 : 
  5927.     {
  5928.       if ( ( ! messwithentries ) ) 
  5929.       bstcantmesswithentri () ; 
  5930.       else {
  5931.       
  5932.     fieldptr = citeptr * numfields + ilkinfo [ exfnloc ] ; 
  5933.     if ( ( fieldinfo [ fieldptr ] == 0 ) ) 
  5934.     pushlitstk ( hashtext [ exfnloc ] , 3 ) ; 
  5935.     else pushlitstk ( fieldinfo [ fieldptr ] , 1 ) ; 
  5936.       } 
  5937.     } 
  5938.     break ; 
  5939.   case 5 : 
  5940.     {
  5941.       if ( ( ! messwithentries ) ) 
  5942.       bstcantmesswithentri () ; 
  5943.       else pushlitstk ( entryints [ citeptr * numentints + ilkinfo [ exfnloc ] 
  5944.       ] , 0 ) ; 
  5945.     } 
  5946.     break ; 
  5947.   case 6 : 
  5948.     {
  5949.       if ( ( ! messwithentries ) ) 
  5950.       bstcantmesswithentri () ; 
  5951.       else {
  5952.       
  5953.     strentptr = citeptr * numentstrs + ilkinfo [ exfnloc ] ; 
  5954.     exbufptr = 0 ; 
  5955.     while ( ( entrystrs [ strentptr ] [ exbufptr ] != 127 ) ) {
  5956.         
  5957.       exbuf [ exbufptr ] = entrystrs [ strentptr ] [ exbufptr ] ; 
  5958.       incr ( exbufptr ) ; 
  5959.     } 
  5960.     exbuflength = exbufptr ; 
  5961.     addpoolbufandpush () ; 
  5962.       } 
  5963.     } 
  5964.     break ; 
  5965.   case 7 : 
  5966.     pushlitstk ( ilkinfo [ exfnloc ] , 0 ) ; 
  5967.     break ; 
  5968.   case 8 : 
  5969.     {
  5970.       strglbptr = ilkinfo [ exfnloc ] ; 
  5971.       if ( ( glbstrptr [ strglbptr ] > 0 ) ) 
  5972.       pushlitstk ( glbstrptr [ strglbptr ] , 1 ) ; 
  5973.       else {
  5974.       
  5975.     {
  5976.       if ( ( poolptr + glbstrend [ strglbptr ] > poolsize ) ) 
  5977.       pooloverflow () ; 
  5978.     } 
  5979.     globchrptr = 0 ; 
  5980.     while ( ( globchrptr < glbstrend [ strglbptr ] ) ) {
  5981.         
  5982.       {
  5983.         strpool [ poolptr ] = globalstrs [ strglbptr ] [ globchrptr ] ; 
  5984.         incr ( poolptr ) ; 
  5985.       } 
  5986.       incr ( globchrptr ) ; 
  5987.     } 
  5988.     pushlitstk ( makestring () , 1 ) ; 
  5989.       } 
  5990.     } 
  5991.     break ; 
  5992.     default: 
  5993.     unknwnfunctionclassc () ; 
  5994.     break ; 
  5995.   } 
  5996. void getthetoplevelauxfil ( ) 
  5997. {/* 41 46 */ while ( true ) {
  5998.     
  5999.     if ( ( gargc > 1 ) ) 
  6000.     auxnamelength = getcmdline ( nameoffile , 1024 ) ; 
  6001.     else {
  6002.     
  6003.       (void) Fputs( stdout ,  "Please type input file name (no extension)--" ) ; 
  6004.       auxnamelength = 0 ; 
  6005.       while ( ( ! eoln ( stdin ) ) ) {
  6006.       
  6007.     if ( ( auxnamelength == 1024 ) ) 
  6008.     {
  6009.       readln ( stdin ) ; 
  6010.       {
  6011.         samtoolongfilenamepr () ; 
  6012.         goto lab46 ; 
  6013.       } 
  6014.     } 
  6015.     nameoffile [ auxnamelength ] = getc ( stdin ) ; 
  6016.     incr ( auxnamelength ) ; 
  6017.       } 
  6018.       if ( ( eof ( stdin ) ) ) 
  6019.       {
  6020.     (void) putc('\n',  stdout );
  6021.     (void) fprintf( stdout , "%s\n",  "Unexpected end of file on terminal---giving up!" ) 
  6022.     ; 
  6023.     uexit ( 1 ) ; 
  6024.       } 
  6025.       readln ( stdin ) ; 
  6026.     } 
  6027.     {
  6028.       if ( ( ( auxnamelength + ( strstart [ sauxextension + 1 ] - strstart [ 
  6029.       sauxextension ] ) > 1024 ) || ( auxnamelength + ( strstart [ 
  6030.       slogextension + 1 ] - strstart [ slogextension ] ) > 1024 ) || ( 
  6031.       auxnamelength + ( strstart [ sbblextension + 1 ] - strstart [ 
  6032.       sbblextension ] ) > 1024 ) ) ) 
  6033.       {
  6034.     samtoolongfilenamepr () ; 
  6035.     goto lab46 ; 
  6036.       } 
  6037.       {
  6038.     namelength = auxnamelength ; 
  6039.     addextension ( sauxextension ) ; 
  6040.     auxptr = 0 ; 
  6041.     if ( ( ! aopenin ( auxfile [ auxptr ] , 0 ) ) ) 
  6042.     {
  6043.       samwrongfilenameprin () ; 
  6044.       goto lab46 ; 
  6045.     } 
  6046.     namelength = auxnamelength ; 
  6047.     addextension ( slogextension ) ; 
  6048.     if ( ( ! aopenout ( logfile ) ) ) 
  6049.     {
  6050.       samwrongfilenameprin () ; 
  6051.       goto lab46 ; 
  6052.     } 
  6053.     namelength = auxnamelength ; 
  6054.     addextension ( sbblextension ) ; 
  6055.     if ( ( ! aopenout ( bblfile ) ) ) 
  6056.     {
  6057.       samwrongfilenameprin () ; 
  6058.       goto lab46 ; 
  6059.     } 
  6060.       } 
  6061.       {
  6062.     namelength = auxnamelength ; 
  6063.     addextension ( sauxextension ) ; 
  6064.     nameptr = 1 ; 
  6065.     while ( ( nameptr <= namelength ) ) {
  6066.         
  6067.       buffer [ nameptr ] = xord [ nameoffile [ nameptr - 1 ] ] ; 
  6068.       incr ( nameptr ) ; 
  6069.     } 
  6070.     toplevstr = hashtext [ strlookup ( buffer , 1 , auxnamelength , 0 , 
  6071.     true ) ] ; 
  6072.     auxlist [ auxptr ] = hashtext [ strlookup ( buffer , 1 , namelength , 
  6073.     3 , true ) ] ; 
  6074.     if ( ( hashfound ) ) 
  6075.     {
  6076.     ;
  6077. #ifdef TRACE
  6078.       printauxname () ; 
  6079. #endif /* TRACE */
  6080.       {
  6081.         {
  6082.           (void) Fputs( logfile ,  "Already encountered auxiliary file" ) ; 
  6083.           (void) Fputs( stdout ,  "Already encountered auxiliary file" ) ; 
  6084.         } 
  6085.         printconfusion () ; 
  6086.         longjmp(jmp9998,1) ; 
  6087.       } 
  6088.     } 
  6089.     auxlnstack [ auxptr ] = 0 ; 
  6090.       } 
  6091.       goto lab41 ; 
  6092.     } 
  6093.     lab46: gargc = 0 ; 
  6094.   } 
  6095.   lab41: ; 
  6096. void auxbibdatacommand ( ) 
  6097. {/* 10 */ if ( ( bibseen ) ) 
  6098.   {
  6099.     auxerrillegalanother ( 0 ) ; 
  6100.     {
  6101.       auxerrprint () ; 
  6102.       goto lab10 ; 
  6103.     } 
  6104.   } 
  6105.   bibseen = true ; 
  6106.   while ( ( buffer [ bufptr2 ] != 125 ) ) {
  6107.       
  6108.     incr ( bufptr2 ) ; 
  6109.     if ( ( ! scan2white ( 125 , 44 ) ) ) 
  6110.     {
  6111.       auxerrnorightbracepr () ; 
  6112.       {
  6113.     auxerrprint () ; 
  6114.     goto lab10 ; 
  6115.       } 
  6116.     } 
  6117.     if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) ) 
  6118.     {
  6119.       auxerrwhitespaceinar () ; 
  6120.       {
  6121.     auxerrprint () ; 
  6122.     goto lab10 ; 
  6123.       } 
  6124.     } 
  6125.     if ( ( ( last > bufptr2 + 1 ) && ( buffer [ bufptr2 ] == 125 ) ) ) 
  6126.     {
  6127.       auxerrstuffafterrigh () ; 
  6128.       {
  6129.     auxerrprint () ; 
  6130.     goto lab10 ; 
  6131.       } 
  6132.     } 
  6133.     {
  6134.       if ( ( bibptr == maxbibfiles ) ) 
  6135.       {
  6136.     printoverflow () ; 
  6137.     {
  6138.       (void) fprintf( logfile , "%s%ld\n",  "number of database files " , (long)maxbibfiles ) ; 
  6139.       (void) fprintf( stdout , "%s%ld\n",  "number of database files " , (long)maxbibfiles ) ; 
  6140.     } 
  6141.     longjmp(jmp9998,1) ; 
  6142.       } 
  6143.       biblist [ bibptr ] = hashtext [ strlookup ( buffer , bufptr1 , ( bufptr2 
  6144.       - bufptr1 ) , 6 , true ) ] ; 
  6145.       if ( ( hashfound ) ) 
  6146.       {
  6147.     {
  6148.       (void) Fputs( logfile ,  "This database file appears more than once: " ) ; 
  6149.       (void) Fputs( stdout ,  "This database file appears more than once: " ) ; 
  6150.     } 
  6151.     printbibname () ; 
  6152.     {
  6153.       auxerrprint () ; 
  6154.       goto lab10 ; 
  6155.     } 
  6156.       } 
  6157.       startname ( biblist [ bibptr ] ) ; 
  6158.       addextension ( sbibextension ) ; 
  6159.       if ( ( ! aopenin ( bibfile [ bibptr ] , 2 ) ) ) 
  6160.       {
  6161.     {
  6162.       (void) Fputs( logfile ,  "I couldn't open database file " ) ; 
  6163.       (void) Fputs( stdout ,  "I couldn't open database file " ) ; 
  6164.     } 
  6165.     printbibname () ; 
  6166.     {
  6167.       auxerrprint () ; 
  6168.       goto lab10 ; 
  6169.     } 
  6170.       } 
  6171.     ;
  6172. #ifdef TRACE
  6173.       {
  6174.     outpoolstr ( logfile , biblist [ bibptr ] ) ; 
  6175.       } 
  6176.       {
  6177.     outpoolstr ( logfile , sbibextension ) ; 
  6178.       } 
  6179.       {
  6180.     (void) fprintf( logfile , "%s\n",  " is a bibdata file" ) ; 
  6181.       } 
  6182. #endif /* TRACE */
  6183.       incr ( bibptr ) ; 
  6184.     } 
  6185.   } 
  6186.   lab10: ; 
  6187. void auxbibstylecommand ( ) 
  6188. {/* 10 */ if ( ( bstseen ) ) 
  6189.   {
  6190.     auxerrillegalanother ( 1 ) ; 
  6191.     {
  6192.       auxerrprint () ; 
  6193.       goto lab10 ; 
  6194.     } 
  6195.   } 
  6196.   bstseen = true ; 
  6197.   incr ( bufptr2 ) ; 
  6198.   if ( ( ! scan1white ( 125 ) ) ) 
  6199.   {
  6200.     auxerrnorightbracepr () ; 
  6201.     {
  6202.       auxerrprint () ; 
  6203.       goto lab10 ; 
  6204.     } 
  6205.   } 
  6206.   if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) ) 
  6207.   {
  6208.     auxerrwhitespaceinar () ; 
  6209.     {
  6210.       auxerrprint () ; 
  6211.       goto lab10 ; 
  6212.     } 
  6213.   } 
  6214.   if ( ( last > bufptr2 + 1 ) ) 
  6215.   {
  6216.     auxerrstuffafterrigh () ; 
  6217.     {
  6218.       auxerrprint () ; 
  6219.       goto lab10 ; 
  6220.     } 
  6221.   } 
  6222.   {
  6223.     bststr = hashtext [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 
  6224.     5 , true ) ] ; 
  6225.     if ( ( hashfound ) ) 
  6226.     {
  6227.     ;
  6228. #ifdef TRACE
  6229.       printbstname () ; 
  6230. #endif /* TRACE */
  6231.       {
  6232.     {
  6233.       (void) Fputs( logfile ,  "Already encountered style file" ) ; 
  6234.       (void) Fputs( stdout ,  "Already encountered style file" ) ; 
  6235.     } 
  6236.     printconfusion () ; 
  6237.     longjmp(jmp9998,1) ; 
  6238.       } 
  6239.     } 
  6240.     startname ( bststr ) ; 
  6241.     addextension ( sbstextension ) ; 
  6242.     if ( ( ! aopenin ( bstfile , 1 ) ) ) 
  6243.     {
  6244.       {
  6245.     (void) Fputs( logfile ,  "I couldn't open style file " ) ; 
  6246.     (void) Fputs( stdout ,  "I couldn't open style file " ) ; 
  6247.       } 
  6248.       printbstname () ; 
  6249.       bststr = 0 ; 
  6250.       {
  6251.     auxerrprint () ; 
  6252.     goto lab10 ; 
  6253.       } 
  6254.     } 
  6255.     {
  6256.       (void) Fputs( logfile ,  "The style file: " ) ; 
  6257.       (void) Fputs( stdout ,  "The style file: " ) ; 
  6258.     } 
  6259.     printbstname () ; 
  6260.   } 
  6261.   lab10: ; 
  6262. void auxcitationcommand ( ) 
  6263. {/* 23 10 */ citationseen = true ; 
  6264.   while ( ( buffer [ bufptr2 ] != 125 ) ) {
  6265.       
  6266.     incr ( bufptr2 ) ; 
  6267.     if ( ( ! scan2white ( 125 , 44 ) ) ) 
  6268.     {
  6269.       auxerrnorightbracepr () ; 
  6270.       {
  6271.     auxerrprint () ; 
  6272.     goto lab10 ; 
  6273.       } 
  6274.     } 
  6275.     if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) ) 
  6276.     {
  6277.       auxerrwhitespaceinar () ; 
  6278.       {
  6279.     auxerrprint () ; 
  6280.     goto lab10 ; 
  6281.       } 
  6282.     } 
  6283.     if ( ( ( last > bufptr2 + 1 ) && ( buffer [ bufptr2 ] == 125 ) ) ) 
  6284.     {
  6285.       auxerrstuffafterrigh () ; 
  6286.       {
  6287.     auxerrprint () ; 
  6288.     goto lab10 ; 
  6289.       } 
  6290.     } 
  6291.     {
  6292.     ;
  6293. #ifdef TRACE
  6294.       {
  6295.     outtoken ( logfile ) ; 
  6296.       } 
  6297.       {
  6298.     (void) Fputs( logfile ,  " cite key encountered" ) ; 
  6299.       } 
  6300. #endif /* TRACE */
  6301.       {
  6302.     if ( ( ( bufptr2 - bufptr1 ) == 1 ) ) 
  6303.     if ( ( buffer [ bufptr1 ] == 42 ) ) 
  6304.     {
  6305.     ;
  6306. #ifdef TRACE
  6307.       {
  6308.         (void) fprintf( logfile , "%s\n",  "---entire database to be included" ) ; 
  6309.       } 
  6310. #endif /* TRACE */
  6311.       if ( ( allentries ) ) 
  6312.       {
  6313.         {
  6314.           (void) fprintf( logfile , "%s\n",  "Multiple inclusions of entire database" ) ; 
  6315.           (void) fprintf( stdout , "%s\n",  "Multiple inclusions of entire database" ) ; 
  6316.         } 
  6317.         {
  6318.           auxerrprint () ; 
  6319.           goto lab10 ; 
  6320.         } 
  6321.       } 
  6322.       else {
  6323.           
  6324.         allentries = true ; 
  6325.         allmarker = citeptr ; 
  6326.         goto lab23 ; 
  6327.       } 
  6328.     } 
  6329.       } 
  6330.       tmpptr = bufptr1 ; 
  6331.       while ( ( tmpptr < bufptr2 ) ) {
  6332.       
  6333.     exbuf [ tmpptr ] = buffer [ tmpptr ] ; 
  6334.     incr ( tmpptr ) ; 
  6335.       } 
  6336.       lowercase ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  6337.       lcciteloc = strlookup ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) , 10 , 
  6338.       true ) ; 
  6339.       if ( ( hashfound ) ) 
  6340.       {
  6341.     ;
  6342. #ifdef TRACE
  6343.     {
  6344.       (void) fprintf( logfile , "%s\n",  " previously" ) ; 
  6345.     } 
  6346. #endif /* TRACE */
  6347.     dummyloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 9 , 
  6348.     false ) ; 
  6349.     if ( ( ! hashfound ) ) 
  6350.     {
  6351.       {
  6352.         (void) Fputs( logfile ,  "Case mismatch error between cite keys " ) ; 
  6353.         (void) Fputs( stdout ,  "Case mismatch error between cite keys " ) ; 
  6354.       } 
  6355.       printatoken () ; 
  6356.       {
  6357.         (void) Fputs( logfile ,  " and " ) ; 
  6358.         (void) Fputs( stdout ,  " and " ) ; 
  6359.       } 
  6360.       printapoolstr ( citelist [ ilkinfo [ ilkinfo [ lcciteloc ] ] ] ) ; 
  6361.       printanewline () ; 
  6362.       {
  6363.         auxerrprint () ; 
  6364.         goto lab10 ; 
  6365.       } 
  6366.     } 
  6367.       } 
  6368.       else {
  6369.       
  6370.     ;
  6371. #ifdef TRACE
  6372.     {
  6373.       (void) putc('\n',  logfile );
  6374.     } 
  6375. #endif /* TRACE */
  6376.     citeloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 9 , 
  6377.     true ) ; 
  6378.     if ( ( hashfound ) ) 
  6379.     hashciteconfusion () ; 
  6380.     checkciteoverflow ( citeptr ) ; 
  6381.     citelist [ citeptr ] = hashtext [ citeloc ] ; 
  6382.     ilkinfo [ citeloc ] = citeptr ; 
  6383.     ilkinfo [ lcciteloc ] = citeloc ; 
  6384.     incr ( citeptr ) ; 
  6385.       } 
  6386.     } 
  6387.     lab23: ; 
  6388.   } 
  6389.   lab10: ; 
  6390. void auxinputcommand ( ) 
  6391. {/* 10 */ boolean auxextensionok  ; 
  6392.   incr ( bufptr2 ) ; 
  6393.   if ( ( ! scan1white ( 125 ) ) ) 
  6394.   {
  6395.     auxerrnorightbracepr () ; 
  6396.     {
  6397.       auxerrprint () ; 
  6398.       goto lab10 ; 
  6399.     } 
  6400.   } 
  6401.   if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) ) 
  6402.   {
  6403.     auxerrwhitespaceinar () ; 
  6404.     {
  6405.       auxerrprint () ; 
  6406.       goto lab10 ; 
  6407.     } 
  6408.   } 
  6409.   if ( ( last > bufptr2 + 1 ) ) 
  6410.   {
  6411.     auxerrstuffafterrigh () ; 
  6412.     {
  6413.       auxerrprint () ; 
  6414.       goto lab10 ; 
  6415.     } 
  6416.   } 
  6417.   {
  6418.     incr ( auxptr ) ; 
  6419.     if ( ( auxptr == auxstacksize ) ) 
  6420.     {
  6421.       printatoken () ; 
  6422.       {
  6423.     (void) Fputs( logfile ,  ": " ) ; 
  6424.     (void) Fputs( stdout ,  ": " ) ; 
  6425.       } 
  6426.       {
  6427.     printoverflow () ; 
  6428.     {
  6429.       (void) fprintf( logfile , "%s%ld\n",  "auxiliary file depth " , (long)auxstacksize ) ; 
  6430.       (void) fprintf( stdout , "%s%ld\n",  "auxiliary file depth " , (long)auxstacksize ) ; 
  6431.     } 
  6432.     longjmp(jmp9998,1) ; 
  6433.       } 
  6434.     } 
  6435.     auxextensionok = true ; 
  6436.     if ( ( ( bufptr2 - bufptr1 ) < ( strstart [ sauxextension + 1 ] - strstart 
  6437.     [ sauxextension ] ) ) ) 
  6438.     auxextensionok = false ; 
  6439.     else if ( ( ! streqbuf ( sauxextension , buffer , bufptr2 - ( strstart [ 
  6440.     sauxextension + 1 ] - strstart [ sauxextension ] ) , ( strstart [ 
  6441.     sauxextension + 1 ] - strstart [ sauxextension ] ) ) ) ) 
  6442.     auxextensionok = false ; 
  6443.     if ( ( ! auxextensionok ) ) 
  6444.     {
  6445.       printatoken () ; 
  6446.       {
  6447.     (void) Fputs( logfile ,  " has a wrong extension" ) ; 
  6448.     (void) Fputs( stdout ,  " has a wrong extension" ) ; 
  6449.       } 
  6450.       decr ( auxptr ) ; 
  6451.       {
  6452.     auxerrprint () ; 
  6453.     goto lab10 ; 
  6454.       } 
  6455.     } 
  6456.     auxlist [ auxptr ] = hashtext [ strlookup ( buffer , bufptr1 , ( bufptr2 - 
  6457.     bufptr1 ) , 3 , true ) ] ; 
  6458.     if ( ( hashfound ) ) 
  6459.     {
  6460.       {
  6461.     (void) Fputs( logfile ,  "Already encountered file " ) ; 
  6462.     (void) Fputs( stdout ,  "Already encountered file " ) ; 
  6463.       } 
  6464.       printauxname () ; 
  6465.       decr ( auxptr ) ; 
  6466.       {
  6467.     auxerrprint () ; 
  6468.     goto lab10 ; 
  6469.       } 
  6470.     } 
  6471.     {
  6472.       startname ( auxlist [ auxptr ] ) ; 
  6473.       nameptr = namelength ; 
  6474.       while ( ( nameptr <= 1024 ) ) {
  6475.       
  6476.     nameoffile [ nameptr ] = ' ' ; 
  6477.     incr ( nameptr ) ; 
  6478.       } 
  6479.       if ( ( ! aopenin ( auxfile [ auxptr ] , 0 ) ) ) 
  6480.       {
  6481.     {
  6482.       (void) Fputs( logfile ,  "I couldn't open auxiliary file " ) ; 
  6483.       (void) Fputs( stdout ,  "I couldn't open auxiliary file " ) ; 
  6484.     } 
  6485.     printauxname () ; 
  6486.     decr ( auxptr ) ; 
  6487.     {
  6488.       auxerrprint () ; 
  6489.       goto lab10 ; 
  6490.     } 
  6491.       } 
  6492.       {
  6493.     (void) fprintf( logfile , "%s%ld%s",  "A level-" , (long)auxptr , " auxiliary file: " ) ; 
  6494.     (void) fprintf( stdout , "%s%ld%s",  "A level-" , (long)auxptr , " auxiliary file: " ) ; 
  6495.       } 
  6496.       printauxname () ; 
  6497.       auxlnstack [ auxptr ] = 0 ; 
  6498.     } 
  6499.   } 
  6500.   lab10: ; 
  6501. void poptheauxstack ( ) 
  6502. {aclose ( auxfile [ auxptr ] ) ; 
  6503.   if ( ( auxptr == 0 ) ) 
  6504.   {lab31=1; return;}
  6505.   else decr ( auxptr ) ; 
  6506. void getauxcommandandproc ( ) 
  6507. {/* 10 */ bufptr2 = 0 ; 
  6508.   if ( ( ! scan1 ( 123 ) ) ) 
  6509.   goto lab10 ; 
  6510.   commandnum = ilkinfo [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) 
  6511.   , 2 , false ) ] ; 
  6512.   if ( ( hashfound ) ) 
  6513.   switch ( ( commandnum ) ) 
  6514.   {case 0 : 
  6515.     auxbibdatacommand () ; 
  6516.     break ; 
  6517.   case 1 : 
  6518.     auxbibstylecommand () ; 
  6519.     break ; 
  6520.   case 2 : 
  6521.     auxcitationcommand () ; 
  6522.     break ; 
  6523.   case 3 : 
  6524.     auxinputcommand () ; 
  6525.     break ; 
  6526.     default: 
  6527.     {
  6528.       {
  6529.     (void) Fputs( logfile ,  "Unknown auxiliary-file command" ) ; 
  6530.     (void) Fputs( stdout ,  "Unknown auxiliary-file command" ) ; 
  6531.       } 
  6532.       printconfusion () ; 
  6533.       longjmp(jmp9998,1) ; 
  6534.     } 
  6535.     break ; 
  6536.   } 
  6537.   lab10: ; 
  6538. void lastcheckforauxerror ( ) 
  6539. {numcites = citeptr ; 
  6540.   numbibfiles = bibptr ; 
  6541.   if ( ( ! citationseen ) ) 
  6542.   {
  6543.     auxend1errprint () ; 
  6544.     {
  6545.       (void) Fputs( logfile ,  "\\citation commands" ) ; 
  6546.       (void) Fputs( stdout ,  "\\citation commands" ) ; 
  6547.     } 
  6548.     auxend2errprint () ; 
  6549.   } 
  6550.   else if ( ( ( numcites == 0 ) && ( ! allentries ) ) ) 
  6551.   {
  6552.     auxend1errprint () ; 
  6553.     {
  6554.       (void) Fputs( logfile ,  "cite keys" ) ; 
  6555.       (void) Fputs( stdout ,  "cite keys" ) ; 
  6556.     } 
  6557.     auxend2errprint () ; 
  6558.   } 
  6559.   if ( ( ! bibseen ) ) 
  6560.   {
  6561.     auxend1errprint () ; 
  6562.     {
  6563.       (void) Fputs( logfile ,  "\\bibdata command" ) ; 
  6564.       (void) Fputs( stdout ,  "\\bibdata command" ) ; 
  6565.     } 
  6566.     auxend2errprint () ; 
  6567.   } 
  6568.   else if ( ( numbibfiles == 0 ) ) 
  6569.   {
  6570.     auxend1errprint () ; 
  6571.     {
  6572.       (void) Fputs( logfile ,  "database files" ) ; 
  6573.       (void) Fputs( stdout ,  "database files" ) ; 
  6574.     } 
  6575.     auxend2errprint () ; 
  6576.   } 
  6577.   if ( ( ! bstseen ) ) 
  6578.   {
  6579.     auxend1errprint () ; 
  6580.     {
  6581.       (void) Fputs( logfile ,  "\\bibstyle command" ) ; 
  6582.       (void) Fputs( stdout ,  "\\bibstyle command" ) ; 
  6583.     } 
  6584.     auxend2errprint () ; 
  6585.   } 
  6586.   else if ( ( bststr == 0 ) ) 
  6587.   {
  6588.     auxend1errprint () ; 
  6589.     {
  6590.       (void) Fputs( logfile ,  "style file" ) ; 
  6591.       (void) Fputs( stdout ,  "style file" ) ; 
  6592.     } 
  6593.     auxend2errprint () ; 
  6594.   } 
  6595. void bstentrycommand ( ) 
  6596. {/* 10 */ if ( ( entryseen ) ) 
  6597.   {
  6598.     {
  6599.       (void) Fputs( logfile ,  "Illegal, another entry command" ) ; 
  6600.       (void) Fputs( stdout ,  "Illegal, another entry command" ) ; 
  6601.     } 
  6602.     {
  6603.       bsterrprintandlookfo () ; 
  6604.       goto lab10 ; 
  6605.     } 
  6606.   } 
  6607.   entryseen = true ; 
  6608.   {
  6609.     if ( ( ! eatbstwhitespace () ) ) 
  6610.     {
  6611.       eatbstprint () ; 
  6612.       {
  6613.     {
  6614.       (void) Fputs( logfile ,  "entry" ) ; 
  6615.       (void) Fputs( stdout ,  "entry" ) ; 
  6616.     } 
  6617.     {
  6618.       bsterrprintandlookfo () ; 
  6619.       goto lab10 ; 
  6620.     } 
  6621.       } 
  6622.     } 
  6623.   } 
  6624.   {
  6625.     {
  6626.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  6627.       {
  6628.     bstleftbraceprint () ; 
  6629.     {
  6630.       {
  6631.         (void) Fputs( logfile ,  "entry" ) ; 
  6632.         (void) Fputs( stdout ,  "entry" ) ; 
  6633.       } 
  6634.       {
  6635.         bsterrprintandlookfo () ; 
  6636.         goto lab10 ; 
  6637.       } 
  6638.     } 
  6639.       } 
  6640.       incr ( bufptr2 ) ; 
  6641.     } 
  6642.     {
  6643.       if ( ( ! eatbstwhitespace () ) ) 
  6644.       {
  6645.     eatbstprint () ; 
  6646.     {
  6647.       {
  6648.         (void) Fputs( logfile ,  "entry" ) ; 
  6649.         (void) Fputs( stdout ,  "entry" ) ; 
  6650.       } 
  6651.       {
  6652.         bsterrprintandlookfo () ; 
  6653.         goto lab10 ; 
  6654.       } 
  6655.     } 
  6656.       } 
  6657.     } 
  6658.     while ( ( buffer [ bufptr2 ] != 125 ) ) {
  6659.     
  6660.       {
  6661.     scanidentifier ( 125 , 37 , 37 ) ; 
  6662.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  6663.     ; 
  6664.     else {
  6665.         
  6666.       bstidprint () ; 
  6667.       {
  6668.         {
  6669.           (void) Fputs( logfile ,  "entry" ) ; 
  6670.           (void) Fputs( stdout ,  "entry" ) ; 
  6671.         } 
  6672.         {
  6673.           bsterrprintandlookfo () ; 
  6674.           goto lab10 ; 
  6675.         } 
  6676.       } 
  6677.     } 
  6678.       } 
  6679.       {
  6680.     ;
  6681. #ifdef TRACE
  6682.     {
  6683.       outtoken ( logfile ) ; 
  6684.     } 
  6685.     {
  6686.       (void) fprintf( logfile , "%s\n",  " is a field" ) ; 
  6687.     } 
  6688. #endif /* TRACE */
  6689.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  6690.     fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  6691.     true ) ; 
  6692.     {
  6693.       if ( ( hashfound ) ) 
  6694.       {
  6695.         alreadyseenfunctionp ( fnloc ) ; 
  6696.         goto lab10 ; 
  6697.       } 
  6698.     } 
  6699.     fntype [ fnloc ] = 4 ; 
  6700.     ilkinfo [ fnloc ] = numfields ; 
  6701.     incr ( numfields ) ; 
  6702.       } 
  6703.       {
  6704.     if ( ( ! eatbstwhitespace () ) ) 
  6705.     {
  6706.       eatbstprint () ; 
  6707.       {
  6708.         {
  6709.           (void) Fputs( logfile ,  "entry" ) ; 
  6710.           (void) Fputs( stdout ,  "entry" ) ; 
  6711.         } 
  6712.         {
  6713.           bsterrprintandlookfo () ; 
  6714.           goto lab10 ; 
  6715.         } 
  6716.       } 
  6717.     } 
  6718.       } 
  6719.     } 
  6720.     incr ( bufptr2 ) ; 
  6721.   } 
  6722.   {
  6723.     if ( ( ! eatbstwhitespace () ) ) 
  6724.     {
  6725.       eatbstprint () ; 
  6726.       {
  6727.     {
  6728.       (void) Fputs( logfile ,  "entry" ) ; 
  6729.       (void) Fputs( stdout ,  "entry" ) ; 
  6730.     } 
  6731.     {
  6732.       bsterrprintandlookfo () ; 
  6733.       goto lab10 ; 
  6734.     } 
  6735.       } 
  6736.     } 
  6737.   } 
  6738.   if ( ( numfields == numpredefinedfields ) ) 
  6739.   {
  6740.     {
  6741.       (void) Fputs( logfile ,  "Warning--I didn't find any fields" ) ; 
  6742.       (void) Fputs( stdout ,  "Warning--I didn't find any fields" ) ; 
  6743.     } 
  6744.     bstwarnprint () ; 
  6745.   } 
  6746.   {
  6747.     {
  6748.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  6749.       {
  6750.     bstleftbraceprint () ; 
  6751.     {
  6752.       {
  6753.         (void) Fputs( logfile ,  "entry" ) ; 
  6754.         (void) Fputs( stdout ,  "entry" ) ; 
  6755.       } 
  6756.       {
  6757.         bsterrprintandlookfo () ; 
  6758.         goto lab10 ; 
  6759.       } 
  6760.     } 
  6761.       } 
  6762.       incr ( bufptr2 ) ; 
  6763.     } 
  6764.     {
  6765.       if ( ( ! eatbstwhitespace () ) ) 
  6766.       {
  6767.     eatbstprint () ; 
  6768.     {
  6769.       {
  6770.         (void) Fputs( logfile ,  "entry" ) ; 
  6771.         (void) Fputs( stdout ,  "entry" ) ; 
  6772.       } 
  6773.       {
  6774.         bsterrprintandlookfo () ; 
  6775.         goto lab10 ; 
  6776.       } 
  6777.     } 
  6778.       } 
  6779.     } 
  6780.     while ( ( buffer [ bufptr2 ] != 125 ) ) {
  6781.     
  6782.       {
  6783.     scanidentifier ( 125 , 37 , 37 ) ; 
  6784.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  6785.     ; 
  6786.     else {
  6787.         
  6788.       bstidprint () ; 
  6789.       {
  6790.         {
  6791.           (void) Fputs( logfile ,  "entry" ) ; 
  6792.           (void) Fputs( stdout ,  "entry" ) ; 
  6793.         } 
  6794.         {
  6795.           bsterrprintandlookfo () ; 
  6796.           goto lab10 ; 
  6797.         } 
  6798.       } 
  6799.     } 
  6800.       } 
  6801.       {
  6802.     ;
  6803. #ifdef TRACE
  6804.     {
  6805.       outtoken ( logfile ) ; 
  6806.     } 
  6807.     {
  6808.       (void) fprintf( logfile , "%s\n",  " is an integer entry-variable" ) ; 
  6809.     } 
  6810. #endif /* TRACE */
  6811.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  6812.     fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  6813.     true ) ; 
  6814.     {
  6815.       if ( ( hashfound ) ) 
  6816.       {
  6817.         alreadyseenfunctionp ( fnloc ) ; 
  6818.         goto lab10 ; 
  6819.       } 
  6820.     } 
  6821.     fntype [ fnloc ] = 5 ; 
  6822.     ilkinfo [ fnloc ] = numentints ; 
  6823.     incr ( numentints ) ; 
  6824.       } 
  6825.       {
  6826.     if ( ( ! eatbstwhitespace () ) ) 
  6827.     {
  6828.       eatbstprint () ; 
  6829.       {
  6830.         {
  6831.           (void) Fputs( logfile ,  "entry" ) ; 
  6832.           (void) Fputs( stdout ,  "entry" ) ; 
  6833.         } 
  6834.         {
  6835.           bsterrprintandlookfo () ; 
  6836.           goto lab10 ; 
  6837.         } 
  6838.       } 
  6839.     } 
  6840.       } 
  6841.     } 
  6842.     incr ( bufptr2 ) ; 
  6843.   } 
  6844.   {
  6845.     if ( ( ! eatbstwhitespace () ) ) 
  6846.     {
  6847.       eatbstprint () ; 
  6848.       {
  6849.     {
  6850.       (void) Fputs( logfile ,  "entry" ) ; 
  6851.       (void) Fputs( stdout ,  "entry" ) ; 
  6852.     } 
  6853.     {
  6854.       bsterrprintandlookfo () ; 
  6855.       goto lab10 ; 
  6856.     } 
  6857.       } 
  6858.     } 
  6859.   } 
  6860.   {
  6861.     {
  6862.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  6863.       {
  6864.     bstleftbraceprint () ; 
  6865.     {
  6866.       {
  6867.         (void) Fputs( logfile ,  "entry" ) ; 
  6868.         (void) Fputs( stdout ,  "entry" ) ; 
  6869.       } 
  6870.       {
  6871.         bsterrprintandlookfo () ; 
  6872.         goto lab10 ; 
  6873.       } 
  6874.     } 
  6875.       } 
  6876.       incr ( bufptr2 ) ; 
  6877.     } 
  6878.     {
  6879.       if ( ( ! eatbstwhitespace () ) ) 
  6880.       {
  6881.     eatbstprint () ; 
  6882.     {
  6883.       {
  6884.         (void) Fputs( logfile ,  "entry" ) ; 
  6885.         (void) Fputs( stdout ,  "entry" ) ; 
  6886.       } 
  6887.       {
  6888.         bsterrprintandlookfo () ; 
  6889.         goto lab10 ; 
  6890.       } 
  6891.     } 
  6892.       } 
  6893.     } 
  6894.     while ( ( buffer [ bufptr2 ] != 125 ) ) {
  6895.     
  6896.       {
  6897.     scanidentifier ( 125 , 37 , 37 ) ; 
  6898.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  6899.     ; 
  6900.     else {
  6901.         
  6902.       bstidprint () ; 
  6903.       {
  6904.         {
  6905.           (void) Fputs( logfile ,  "entry" ) ; 
  6906.           (void) Fputs( stdout ,  "entry" ) ; 
  6907.         } 
  6908.         {
  6909.           bsterrprintandlookfo () ; 
  6910.           goto lab10 ; 
  6911.         } 
  6912.       } 
  6913.     } 
  6914.       } 
  6915.       {
  6916.     ;
  6917. #ifdef TRACE
  6918.     {
  6919.       outtoken ( logfile ) ; 
  6920.     } 
  6921.     {
  6922.       (void) fprintf( logfile , "%s\n",  " is a string entry-variable" ) ; 
  6923.     } 
  6924. #endif /* TRACE */
  6925.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  6926.     fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  6927.     true ) ; 
  6928.     {
  6929.       if ( ( hashfound ) ) 
  6930.       {
  6931.         alreadyseenfunctionp ( fnloc ) ; 
  6932.         goto lab10 ; 
  6933.       } 
  6934.     } 
  6935.     fntype [ fnloc ] = 6 ; 
  6936.     ilkinfo [ fnloc ] = numentstrs ; 
  6937.     incr ( numentstrs ) ; 
  6938.       } 
  6939.       {
  6940.     if ( ( ! eatbstwhitespace () ) ) 
  6941.     {
  6942.       eatbstprint () ; 
  6943.       {
  6944.         {
  6945.           (void) Fputs( logfile ,  "entry" ) ; 
  6946.           (void) Fputs( stdout ,  "entry" ) ; 
  6947.         } 
  6948.         {
  6949.           bsterrprintandlookfo () ; 
  6950.           goto lab10 ; 
  6951.         } 
  6952.       } 
  6953.     } 
  6954.       } 
  6955.     } 
  6956.     incr ( bufptr2 ) ; 
  6957.   } 
  6958.   lab10: ; 
  6959. boolean badargumenttoken ( ) 
  6960. {/* 10 */ register boolean Result; Result = true ; 
  6961.   lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  6962.   fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , false ) 
  6963.   ; 
  6964.   if ( ( ! hashfound ) ) 
  6965.   {
  6966.     printatoken () ; 
  6967.     {
  6968.       {
  6969.     (void) Fputs( logfile ,  " is an unknown function" ) ; 
  6970.     (void) Fputs( stdout ,  " is an unknown function" ) ; 
  6971.       } 
  6972.       {
  6973.     bsterrprintandlookfo () ; 
  6974.     goto lab10 ; 
  6975.       } 
  6976.     } 
  6977.   } 
  6978.   else if ( ( ( fntype [ fnloc ] != 0 ) && ( fntype [ fnloc ] != 1 ) ) ) 
  6979.   {
  6980.     printatoken () ; 
  6981.     {
  6982.       (void) Fputs( logfile ,  " has bad function type " ) ; 
  6983.       (void) Fputs( stdout ,  " has bad function type " ) ; 
  6984.     } 
  6985.     printfnclass ( fnloc ) ; 
  6986.     {
  6987.       bsterrprintandlookfo () ; 
  6988.       goto lab10 ; 
  6989.     } 
  6990.   } 
  6991.   Result = false ; 
  6992.   lab10: ; 
  6993.   return(Result) ; 
  6994. void bstexecutecommand ( ) 
  6995. {/* 10 */ if ( ( ! readseen ) ) 
  6996.   {
  6997.     {
  6998.       (void) Fputs( logfile ,  "Illegal, execute command before read command" ) ; 
  6999.       (void) Fputs( stdout ,  "Illegal, execute command before read command" ) ; 
  7000.     } 
  7001.     {
  7002.       bsterrprintandlookfo () ; 
  7003.       goto lab10 ; 
  7004.     } 
  7005.   } 
  7006.   {
  7007.     if ( ( ! eatbstwhitespace () ) ) 
  7008.     {
  7009.       eatbstprint () ; 
  7010.       {
  7011.     {
  7012.       (void) Fputs( logfile ,  "execute" ) ; 
  7013.       (void) Fputs( stdout ,  "execute" ) ; 
  7014.     } 
  7015.     {
  7016.       bsterrprintandlookfo () ; 
  7017.       goto lab10 ; 
  7018.     } 
  7019.       } 
  7020.     } 
  7021.   } 
  7022.   {
  7023.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  7024.     {
  7025.       bstleftbraceprint () ; 
  7026.       {
  7027.     {
  7028.       (void) Fputs( logfile ,  "execute" ) ; 
  7029.       (void) Fputs( stdout ,  "execute" ) ; 
  7030.     } 
  7031.     {
  7032.       bsterrprintandlookfo () ; 
  7033.       goto lab10 ; 
  7034.     } 
  7035.       } 
  7036.     } 
  7037.     incr ( bufptr2 ) ; 
  7038.   } 
  7039.   {
  7040.     if ( ( ! eatbstwhitespace () ) ) 
  7041.     {
  7042.       eatbstprint () ; 
  7043.       {
  7044.     {
  7045.       (void) Fputs( logfile ,  "execute" ) ; 
  7046.       (void) Fputs( stdout ,  "execute" ) ; 
  7047.     } 
  7048.     {
  7049.       bsterrprintandlookfo () ; 
  7050.       goto lab10 ; 
  7051.     } 
  7052.       } 
  7053.     } 
  7054.   } 
  7055.   {
  7056.     scanidentifier ( 125 , 37 , 37 ) ; 
  7057.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  7058.     ; 
  7059.     else {
  7060.     
  7061.       bstidprint () ; 
  7062.       {
  7063.     {
  7064.       (void) Fputs( logfile ,  "execute" ) ; 
  7065.       (void) Fputs( stdout ,  "execute" ) ; 
  7066.     } 
  7067.     {
  7068.       bsterrprintandlookfo () ; 
  7069.       goto lab10 ; 
  7070.     } 
  7071.       } 
  7072.     } 
  7073.   } 
  7074.   {
  7075.     ;
  7076. #ifdef TRACE
  7077.     {
  7078.       outtoken ( logfile ) ; 
  7079.     } 
  7080.     {
  7081.       (void) fprintf( logfile , "%s\n",  " is a to be executed function" ) ; 
  7082.     } 
  7083. #endif /* TRACE */
  7084.     if ( ( badargumenttoken () ) ) 
  7085.     goto lab10 ; 
  7086.   } 
  7087.   {
  7088.     if ( ( ! eatbstwhitespace () ) ) 
  7089.     {
  7090.       eatbstprint () ; 
  7091.       {
  7092.     {
  7093.       (void) Fputs( logfile ,  "execute" ) ; 
  7094.       (void) Fputs( stdout ,  "execute" ) ; 
  7095.     } 
  7096.     {
  7097.       bsterrprintandlookfo () ; 
  7098.       goto lab10 ; 
  7099.     } 
  7100.       } 
  7101.     } 
  7102.   } 
  7103.   {
  7104.     if ( ( buffer [ bufptr2 ] != 125 ) ) 
  7105.     {
  7106.       bstrightbraceprint () ; 
  7107.       {
  7108.     {
  7109.       (void) Fputs( logfile ,  "execute" ) ; 
  7110.       (void) Fputs( stdout ,  "execute" ) ; 
  7111.     } 
  7112.     {
  7113.       bsterrprintandlookfo () ; 
  7114.       goto lab10 ; 
  7115.     } 
  7116.       } 
  7117.     } 
  7118.     incr ( bufptr2 ) ; 
  7119.   } 
  7120.   {
  7121.     initcommandexecution () ; 
  7122.     messwithentries = false ; 
  7123.     executefn ( fnloc ) ; 
  7124.     checkcommandexecutio () ; 
  7125.   } 
  7126.   lab10: ; 
  7127. void bstfunctioncommand ( ) 
  7128. {/* 10 */ {
  7129.     
  7130.     if ( ( ! eatbstwhitespace () ) ) 
  7131.     {
  7132.       eatbstprint () ; 
  7133.       {
  7134.     {
  7135.       (void) Fputs( logfile ,  "function" ) ; 
  7136.       (void) Fputs( stdout ,  "function" ) ; 
  7137.     } 
  7138.     {
  7139.       bsterrprintandlookfo () ; 
  7140.       goto lab10 ; 
  7141.     } 
  7142.       } 
  7143.     } 
  7144.   } 
  7145.   {
  7146.     {
  7147.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  7148.       {
  7149.     bstleftbraceprint () ; 
  7150.     {
  7151.       {
  7152.         (void) Fputs( logfile ,  "function" ) ; 
  7153.         (void) Fputs( stdout ,  "function" ) ; 
  7154.       } 
  7155.       {
  7156.         bsterrprintandlookfo () ; 
  7157.         goto lab10 ; 
  7158.       } 
  7159.     } 
  7160.       } 
  7161.       incr ( bufptr2 ) ; 
  7162.     } 
  7163.     {
  7164.       if ( ( ! eatbstwhitespace () ) ) 
  7165.       {
  7166.     eatbstprint () ; 
  7167.     {
  7168.       {
  7169.         (void) Fputs( logfile ,  "function" ) ; 
  7170.         (void) Fputs( stdout ,  "function" ) ; 
  7171.       } 
  7172.       {
  7173.         bsterrprintandlookfo () ; 
  7174.         goto lab10 ; 
  7175.       } 
  7176.     } 
  7177.       } 
  7178.     } 
  7179.     {
  7180.       scanidentifier ( 125 , 37 , 37 ) ; 
  7181.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  7182.       ; 
  7183.       else {
  7184.       
  7185.     bstidprint () ; 
  7186.     {
  7187.       {
  7188.         (void) Fputs( logfile ,  "function" ) ; 
  7189.         (void) Fputs( stdout ,  "function" ) ; 
  7190.       } 
  7191.       {
  7192.         bsterrprintandlookfo () ; 
  7193.         goto lab10 ; 
  7194.       } 
  7195.     } 
  7196.       } 
  7197.     } 
  7198.     {
  7199.     ;
  7200. #ifdef TRACE
  7201.       {
  7202.     outtoken ( logfile ) ; 
  7203.       } 
  7204.       {
  7205.     (void) fprintf( logfile , "%s\n",  " is a wizard-defined function" ) ; 
  7206.       } 
  7207. #endif /* TRACE */
  7208.       lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  7209.       wizloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  7210.       true ) ; 
  7211.       {
  7212.     if ( ( hashfound ) ) 
  7213.     {
  7214.       alreadyseenfunctionp ( wizloc ) ; 
  7215.       goto lab10 ; 
  7216.     } 
  7217.       } 
  7218.       fntype [ wizloc ] = 1 ; 
  7219.       if ( ( hashtext [ wizloc ] == sdefault ) ) 
  7220.       bdefault = wizloc ; 
  7221.     } 
  7222.     {
  7223.       if ( ( ! eatbstwhitespace () ) ) 
  7224.       {
  7225.     eatbstprint () ; 
  7226.     {
  7227.       {
  7228.         (void) Fputs( logfile ,  "function" ) ; 
  7229.         (void) Fputs( stdout ,  "function" ) ; 
  7230.       } 
  7231.       {
  7232.         bsterrprintandlookfo () ; 
  7233.         goto lab10 ; 
  7234.       } 
  7235.     } 
  7236.       } 
  7237.     } 
  7238.     {
  7239.       if ( ( buffer [ bufptr2 ] != 125 ) ) 
  7240.       {
  7241.     bstrightbraceprint () ; 
  7242.     {
  7243.       {
  7244.         (void) Fputs( logfile ,  "function" ) ; 
  7245.         (void) Fputs( stdout ,  "function" ) ; 
  7246.       } 
  7247.       {
  7248.         bsterrprintandlookfo () ; 
  7249.         goto lab10 ; 
  7250.       } 
  7251.     } 
  7252.       } 
  7253.       incr ( bufptr2 ) ; 
  7254.     } 
  7255.   } 
  7256.   {
  7257.     if ( ( ! eatbstwhitespace () ) ) 
  7258.     {
  7259.       eatbstprint () ; 
  7260.       {
  7261.     {
  7262.       (void) Fputs( logfile ,  "function" ) ; 
  7263.       (void) Fputs( stdout ,  "function" ) ; 
  7264.     } 
  7265.     {
  7266.       bsterrprintandlookfo () ; 
  7267.       goto lab10 ; 
  7268.     } 
  7269.       } 
  7270.     } 
  7271.   } 
  7272.   {
  7273.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  7274.     {
  7275.       bstleftbraceprint () ; 
  7276.       {
  7277.     {
  7278.       (void) Fputs( logfile ,  "function" ) ; 
  7279.       (void) Fputs( stdout ,  "function" ) ; 
  7280.     } 
  7281.     {
  7282.       bsterrprintandlookfo () ; 
  7283.       goto lab10 ; 
  7284.     } 
  7285.       } 
  7286.     } 
  7287.     incr ( bufptr2 ) ; 
  7288.   } 
  7289.   scanfndef ( wizloc ) ; 
  7290.   lab10: ; 
  7291. void bstintegerscommand ( ) 
  7292. {/* 10 */ {
  7293.     
  7294.     if ( ( ! eatbstwhitespace () ) ) 
  7295.     {
  7296.       eatbstprint () ; 
  7297.       {
  7298.     {
  7299.       (void) Fputs( logfile ,  "integers" ) ; 
  7300.       (void) Fputs( stdout ,  "integers" ) ; 
  7301.     } 
  7302.     {
  7303.       bsterrprintandlookfo () ; 
  7304.       goto lab10 ; 
  7305.     } 
  7306.       } 
  7307.     } 
  7308.   } 
  7309.   {
  7310.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  7311.     {
  7312.       bstleftbraceprint () ; 
  7313.       {
  7314.     {
  7315.       (void) Fputs( logfile ,  "integers" ) ; 
  7316.       (void) Fputs( stdout ,  "integers" ) ; 
  7317.     } 
  7318.     {
  7319.       bsterrprintandlookfo () ; 
  7320.       goto lab10 ; 
  7321.     } 
  7322.       } 
  7323.     } 
  7324.     incr ( bufptr2 ) ; 
  7325.   } 
  7326.   {
  7327.     if ( ( ! eatbstwhitespace () ) ) 
  7328.     {
  7329.       eatbstprint () ; 
  7330.       {
  7331.     {
  7332.       (void) Fputs( logfile ,  "integers" ) ; 
  7333.       (void) Fputs( stdout ,  "integers" ) ; 
  7334.     } 
  7335.     {
  7336.       bsterrprintandlookfo () ; 
  7337.       goto lab10 ; 
  7338.     } 
  7339.       } 
  7340.     } 
  7341.   } 
  7342.   while ( ( buffer [ bufptr2 ] != 125 ) ) {
  7343.       
  7344.     {
  7345.       scanidentifier ( 125 , 37 , 37 ) ; 
  7346.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  7347.       ; 
  7348.       else {
  7349.       
  7350.     bstidprint () ; 
  7351.     {
  7352.       {
  7353.         (void) Fputs( logfile ,  "integers" ) ; 
  7354.         (void) Fputs( stdout ,  "integers" ) ; 
  7355.       } 
  7356.       {
  7357.         bsterrprintandlookfo () ; 
  7358.         goto lab10 ; 
  7359.       } 
  7360.     } 
  7361.       } 
  7362.     } 
  7363.     {
  7364.     ;
  7365. #ifdef TRACE
  7366.       {
  7367.     outtoken ( logfile ) ; 
  7368.       } 
  7369.       {
  7370.     (void) fprintf( logfile , "%s\n",  " is an integer global-variable" ) ; 
  7371.       } 
  7372. #endif /* TRACE */
  7373.       lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  7374.       fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , true 
  7375.       ) ; 
  7376.       {
  7377.     if ( ( hashfound ) ) 
  7378.     {
  7379.       alreadyseenfunctionp ( fnloc ) ; 
  7380.       goto lab10 ; 
  7381.     } 
  7382.       } 
  7383.       fntype [ fnloc ] = 7 ; 
  7384.       ilkinfo [ fnloc ] = 0 ; 
  7385.     } 
  7386.     {
  7387.       if ( ( ! eatbstwhitespace () ) ) 
  7388.       {
  7389.     eatbstprint () ; 
  7390.     {
  7391.       {
  7392.         (void) Fputs( logfile ,  "integers" ) ; 
  7393.         (void) Fputs( stdout ,  "integers" ) ; 
  7394.       } 
  7395.       {
  7396.         bsterrprintandlookfo () ; 
  7397.         goto lab10 ; 
  7398.       } 
  7399.     } 
  7400.       } 
  7401.     } 
  7402.   } 
  7403.   incr ( bufptr2 ) ; 
  7404.   lab10: ; 
  7405. void bstiteratecommand ( ) 
  7406. {/* 10 */ if ( ( ! readseen ) ) 
  7407.   {
  7408.     {
  7409.       (void) Fputs( logfile ,  "Illegal, iterate command before read command" ) ; 
  7410.       (void) Fputs( stdout ,  "Illegal, iterate command before read command" ) ; 
  7411.     } 
  7412.     {
  7413.       bsterrprintandlookfo () ; 
  7414.       goto lab10 ; 
  7415.     } 
  7416.   } 
  7417.   {
  7418.     if ( ( ! eatbstwhitespace () ) ) 
  7419.     {
  7420.       eatbstprint () ; 
  7421.       {
  7422.     {
  7423.       (void) Fputs( logfile ,  "iterate" ) ; 
  7424.       (void) Fputs( stdout ,  "iterate" ) ; 
  7425.     } 
  7426.     {
  7427.       bsterrprintandlookfo () ; 
  7428.       goto lab10 ; 
  7429.     } 
  7430.       } 
  7431.     } 
  7432.   } 
  7433.   {
  7434.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  7435.     {
  7436.       bstleftbraceprint () ; 
  7437.       {
  7438.     {
  7439.       (void) Fputs( logfile ,  "iterate" ) ; 
  7440.       (void) Fputs( stdout ,  "iterate" ) ; 
  7441.     } 
  7442.     {
  7443.       bsterrprintandlookfo () ; 
  7444.       goto lab10 ; 
  7445.     } 
  7446.       } 
  7447.     } 
  7448.     incr ( bufptr2 ) ; 
  7449.   } 
  7450.   {
  7451.     if ( ( ! eatbstwhitespace () ) ) 
  7452.     {
  7453.       eatbstprint () ; 
  7454.       {
  7455.     {
  7456.       (void) Fputs( logfile ,  "iterate" ) ; 
  7457.       (void) Fputs( stdout ,  "iterate" ) ; 
  7458.     } 
  7459.     {
  7460.       bsterrprintandlookfo () ; 
  7461.       goto lab10 ; 
  7462.     } 
  7463.       } 
  7464.     } 
  7465.   } 
  7466.   {
  7467.     scanidentifier ( 125 , 37 , 37 ) ; 
  7468.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  7469.     ; 
  7470.     else {
  7471.     
  7472.       bstidprint () ; 
  7473.       {
  7474.     {
  7475.       (void) Fputs( logfile ,  "iterate" ) ; 
  7476.       (void) Fputs( stdout ,  "iterate" ) ; 
  7477.     } 
  7478.     {
  7479.       bsterrprintandlookfo () ; 
  7480.       goto lab10 ; 
  7481.     } 
  7482.       } 
  7483.     } 
  7484.   } 
  7485.   {
  7486.     ;
  7487. #ifdef TRACE
  7488.     {
  7489.       outtoken ( logfile ) ; 
  7490.     } 
  7491.     {
  7492.       (void) fprintf( logfile , "%s\n",  " is a to be iterated function" ) ; 
  7493.     } 
  7494. #endif /* TRACE */
  7495.     if ( ( badargumenttoken () ) ) 
  7496.     goto lab10 ; 
  7497.   } 
  7498.   {
  7499.     if ( ( ! eatbstwhitespace () ) ) 
  7500.     {
  7501.       eatbstprint () ; 
  7502.       {
  7503.     {
  7504.       (void) Fputs( logfile ,  "iterate" ) ; 
  7505.       (void) Fputs( stdout ,  "iterate" ) ; 
  7506.     } 
  7507.     {
  7508.       bsterrprintandlookfo () ; 
  7509.       goto lab10 ; 
  7510.     } 
  7511.       } 
  7512.     } 
  7513.   } 
  7514.   {
  7515.     if ( ( buffer [ bufptr2 ] != 125 ) ) 
  7516.     {
  7517.       bstrightbraceprint () ; 
  7518.       {
  7519.     {
  7520.       (void) Fputs( logfile ,  "iterate" ) ; 
  7521.       (void) Fputs( stdout ,  "iterate" ) ; 
  7522.     } 
  7523.     {
  7524.       bsterrprintandlookfo () ; 
  7525.       goto lab10 ; 
  7526.     } 
  7527.       } 
  7528.     } 
  7529.     incr ( bufptr2 ) ; 
  7530.   } 
  7531.   {
  7532.     initcommandexecution () ; 
  7533.     messwithentries = true ; 
  7534.     sortciteptr = 0 ; 
  7535.     while ( ( sortciteptr < numcites ) ) {
  7536.     
  7537.       citeptr = citeinfo [ sortciteptr ] ; 
  7538.     ;
  7539. #ifdef TRACE
  7540.       {
  7541.     outpoolstr ( logfile , hashtext [ fnloc ] ) ; 
  7542.       } 
  7543.       {
  7544.     (void) Fputs( logfile ,  " to be iterated on " ) ; 
  7545.       } 
  7546.       {
  7547.     outpoolstr ( logfile , citelist [ citeptr ] ) ; 
  7548.       } 
  7549.       {
  7550.     (void) putc('\n',  logfile );
  7551.       } 
  7552. #endif /* TRACE */
  7553.       executefn ( fnloc ) ; 
  7554.       checkcommandexecutio () ; 
  7555.       incr ( sortciteptr ) ; 
  7556.     } 
  7557.   } 
  7558.   lab10: ; 
  7559. void bstmacrocommand ( ) 
  7560. {/* 10 */ if ( ( readseen ) ) 
  7561.   {
  7562.     {
  7563.       (void) Fputs( logfile ,  "Illegal, macro command after read command" ) ; 
  7564.       (void) Fputs( stdout ,  "Illegal, macro command after read command" ) ; 
  7565.     } 
  7566.     {
  7567.       bsterrprintandlookfo () ; 
  7568.       goto lab10 ; 
  7569.     } 
  7570.   } 
  7571.   {
  7572.     if ( ( ! eatbstwhitespace () ) ) 
  7573.     {
  7574.       eatbstprint () ; 
  7575.       {
  7576.     {
  7577.       (void) Fputs( logfile ,  "macro" ) ; 
  7578.       (void) Fputs( stdout ,  "macro" ) ; 
  7579.     } 
  7580.     {
  7581.       bsterrprintandlookfo () ; 
  7582.       goto lab10 ; 
  7583.     } 
  7584.       } 
  7585.     } 
  7586.   } 
  7587.   {
  7588.     {
  7589.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  7590.       {
  7591.     bstleftbraceprint () ; 
  7592.     {
  7593.       {
  7594.         (void) Fputs( logfile ,  "macro" ) ; 
  7595.         (void) Fputs( stdout ,  "macro" ) ; 
  7596.       } 
  7597.       {
  7598.         bsterrprintandlookfo () ; 
  7599.         goto lab10 ; 
  7600.       } 
  7601.     } 
  7602.       } 
  7603.       incr ( bufptr2 ) ; 
  7604.     } 
  7605.     {
  7606.       if ( ( ! eatbstwhitespace () ) ) 
  7607.       {
  7608.     eatbstprint () ; 
  7609.     {
  7610.       {
  7611.         (void) Fputs( logfile ,  "macro" ) ; 
  7612.         (void) Fputs( stdout ,  "macro" ) ; 
  7613.       } 
  7614.       {
  7615.         bsterrprintandlookfo () ; 
  7616.         goto lab10 ; 
  7617.       } 
  7618.     } 
  7619.       } 
  7620.     } 
  7621.     {
  7622.       scanidentifier ( 125 , 37 , 37 ) ; 
  7623.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  7624.       ; 
  7625.       else {
  7626.       
  7627.     bstidprint () ; 
  7628.     {
  7629.       {
  7630.         (void) Fputs( logfile ,  "macro" ) ; 
  7631.         (void) Fputs( stdout ,  "macro" ) ; 
  7632.       } 
  7633.       {
  7634.         bsterrprintandlookfo () ; 
  7635.         goto lab10 ; 
  7636.       } 
  7637.     } 
  7638.       } 
  7639.     } 
  7640.     {
  7641.     ;
  7642. #ifdef TRACE
  7643.       {
  7644.     outtoken ( logfile ) ; 
  7645.       } 
  7646.       {
  7647.     (void) fprintf( logfile , "%s\n",  " is a macro" ) ; 
  7648.       } 
  7649. #endif /* TRACE */
  7650.       lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  7651.       macronameloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 13 
  7652.       , true ) ; 
  7653.       if ( ( hashfound ) ) 
  7654.       {
  7655.     printatoken () ; 
  7656.     {
  7657.       {
  7658.         (void) Fputs( logfile ,  " is already defined as a macro" ) ; 
  7659.         (void) Fputs( stdout ,  " is already defined as a macro" ) ; 
  7660.       } 
  7661.       {
  7662.         bsterrprintandlookfo () ; 
  7663.         goto lab10 ; 
  7664.       } 
  7665.     } 
  7666.       } 
  7667.       ilkinfo [ macronameloc ] = hashtext [ macronameloc ] ; 
  7668.     } 
  7669.     {
  7670.       if ( ( ! eatbstwhitespace () ) ) 
  7671.       {
  7672.     eatbstprint () ; 
  7673.     {
  7674.       {
  7675.         (void) Fputs( logfile ,  "macro" ) ; 
  7676.         (void) Fputs( stdout ,  "macro" ) ; 
  7677.       } 
  7678.       {
  7679.         bsterrprintandlookfo () ; 
  7680.         goto lab10 ; 
  7681.       } 
  7682.     } 
  7683.       } 
  7684.     } 
  7685.     {
  7686.       if ( ( buffer [ bufptr2 ] != 125 ) ) 
  7687.       {
  7688.     bstrightbraceprint () ; 
  7689.     {
  7690.       {
  7691.         (void) Fputs( logfile ,  "macro" ) ; 
  7692.         (void) Fputs( stdout ,  "macro" ) ; 
  7693.       } 
  7694.       {
  7695.         bsterrprintandlookfo () ; 
  7696.         goto lab10 ; 
  7697.       } 
  7698.     } 
  7699.       } 
  7700.       incr ( bufptr2 ) ; 
  7701.     } 
  7702.   } 
  7703.   {
  7704.     if ( ( ! eatbstwhitespace () ) ) 
  7705.     {
  7706.       eatbstprint () ; 
  7707.       {
  7708.     {
  7709.       (void) Fputs( logfile ,  "macro" ) ; 
  7710.       (void) Fputs( stdout ,  "macro" ) ; 
  7711.     } 
  7712.     {
  7713.       bsterrprintandlookfo () ; 
  7714.       goto lab10 ; 
  7715.     } 
  7716.       } 
  7717.     } 
  7718.   } 
  7719.   {
  7720.     {
  7721.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  7722.       {
  7723.     bstleftbraceprint () ; 
  7724.     {
  7725.       {
  7726.         (void) Fputs( logfile ,  "macro" ) ; 
  7727.         (void) Fputs( stdout ,  "macro" ) ; 
  7728.       } 
  7729.       {
  7730.         bsterrprintandlookfo () ; 
  7731.         goto lab10 ; 
  7732.       } 
  7733.     } 
  7734.       } 
  7735.       incr ( bufptr2 ) ; 
  7736.     } 
  7737.     {
  7738.       if ( ( ! eatbstwhitespace () ) ) 
  7739.       {
  7740.     eatbstprint () ; 
  7741.     {
  7742.       {
  7743.         (void) Fputs( logfile ,  "macro" ) ; 
  7744.         (void) Fputs( stdout ,  "macro" ) ; 
  7745.       } 
  7746.       {
  7747.         bsterrprintandlookfo () ; 
  7748.         goto lab10 ; 
  7749.       } 
  7750.     } 
  7751.       } 
  7752.     } 
  7753.     if ( ( buffer [ bufptr2 ] != 34 ) ) 
  7754.     {
  7755.       {
  7756.     (void) fprintf( logfile , "%s%c%s",  "A macro definition must be " , xchr [ 34 ] ,         "-delimited" ) ; 
  7757.     (void) fprintf( stdout , "%s%c%s",  "A macro definition must be " , xchr [ 34 ] ,         "-delimited" ) ; 
  7758.       } 
  7759.       {
  7760.     bsterrprintandlookfo () ; 
  7761.     goto lab10 ; 
  7762.       } 
  7763.     } 
  7764.     {
  7765.       incr ( bufptr2 ) ; 
  7766.       if ( ( ! scan1 ( 34 ) ) ) 
  7767.       {
  7768.     {
  7769.       (void) fprintf( logfile , "%s%c%s",  "There's no `" , xchr [ 34 ] ,           "' to end macro definition" ) ; 
  7770.       (void) fprintf( stdout , "%s%c%s",  "There's no `" , xchr [ 34 ] ,           "' to end macro definition" ) ; 
  7771.     } 
  7772.     {
  7773.       bsterrprintandlookfo () ; 
  7774.       goto lab10 ; 
  7775.     } 
  7776.       } 
  7777.     ;
  7778. #ifdef TRACE
  7779.       {
  7780.     (void) putc( '"' ,  logfile );
  7781.       } 
  7782.       {
  7783.     outtoken ( logfile ) ; 
  7784.       } 
  7785.       {
  7786.     (void) putc( '"' ,  logfile );
  7787.       } 
  7788.       {
  7789.     (void) fprintf( logfile , "%s\n",  " is a macro string" ) ; 
  7790.       } 
  7791. #endif /* TRACE */
  7792.       macrodefloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 0 , 
  7793.       true ) ; 
  7794.       fntype [ macrodefloc ] = 3 ; 
  7795.       ilkinfo [ macronameloc ] = hashtext [ macrodefloc ] ; 
  7796.       incr ( bufptr2 ) ; 
  7797.     } 
  7798.     {
  7799.       if ( ( ! eatbstwhitespace () ) ) 
  7800.       {
  7801.     eatbstprint () ; 
  7802.     {
  7803.       {
  7804.         (void) Fputs( logfile ,  "macro" ) ; 
  7805.         (void) Fputs( stdout ,  "macro" ) ; 
  7806.       } 
  7807.       {
  7808.         bsterrprintandlookfo () ; 
  7809.         goto lab10 ; 
  7810.       } 
  7811.     } 
  7812.       } 
  7813.     } 
  7814.     {
  7815.       if ( ( buffer [ bufptr2 ] != 125 ) ) 
  7816.       {
  7817.     bstrightbraceprint () ; 
  7818.     {
  7819.       {
  7820.         (void) Fputs( logfile ,  "macro" ) ; 
  7821.         (void) Fputs( stdout ,  "macro" ) ; 
  7822.       } 
  7823.       {
  7824.         bsterrprintandlookfo () ; 
  7825.         goto lab10 ; 
  7826.       } 
  7827.     } 
  7828.       } 
  7829.       incr ( bufptr2 ) ; 
  7830.     } 
  7831.   } 
  7832.   lab10: ; 
  7833. void getbibcommandorentry ( ) 
  7834. {/* 22 26 15 10 */ atbibcommand = false ; 
  7835.   while ( ( ! scan1 ( 64 ) ) ) {
  7836.       
  7837.     if ( ( ! inputln ( bibfile [ bibptr ] ) ) ) 
  7838.     goto lab10 ; 
  7839.     incr ( biblinenum ) ; 
  7840.     bufptr2 = 0 ; 
  7841.   } 
  7842.   {
  7843.     if ( ( buffer [ bufptr2 ] != 64 ) ) 
  7844.     {
  7845.       {
  7846.     (void) fprintf( logfile , "%s%c%s",  "An \"" , xchr [ 64 ] , "\" disappeared" ) ; 
  7847.     (void) fprintf( stdout , "%s%c%s",  "An \"" , xchr [ 64 ] , "\" disappeared" ) ; 
  7848.       } 
  7849.       printconfusion () ; 
  7850.       longjmp(jmp9998,1) ; 
  7851.     } 
  7852.     incr ( bufptr2 ) ; 
  7853.     {
  7854.       if ( ( ! eatbibwhitespace () ) ) 
  7855.       {
  7856.     eatbibprint () ; 
  7857.     goto lab10 ; 
  7858.       } 
  7859.     } 
  7860.     scanidentifier ( 123 , 40 , 40 ) ; 
  7861.     {
  7862.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  7863.       ; 
  7864.       else {
  7865.       
  7866.     bibidprint () ; 
  7867.     {
  7868.       {
  7869.         (void) Fputs( logfile ,  "an entry type" ) ; 
  7870.         (void) Fputs( stdout ,  "an entry type" ) ; 
  7871.       } 
  7872.       biberrprint () ; 
  7873.       goto lab10 ; 
  7874.     } 
  7875.       } 
  7876.     } 
  7877.     ;
  7878. #ifdef TRACE
  7879.     {
  7880.       outtoken ( logfile ) ; 
  7881.     } 
  7882.     {
  7883.       (void) fprintf( logfile , "%s\n",  " is an entry type or a database-file command" ) ; 
  7884.     } 
  7885. #endif /* TRACE */
  7886.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  7887.     commandnum = ilkinfo [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 
  7888.     ) , 12 , false ) ] ; 
  7889.     if ( ( hashfound ) ) 
  7890.     {
  7891.       atbibcommand = true ; 
  7892.       switch ( ( commandnum ) ) 
  7893.       {case 0 : 
  7894.     {
  7895.       goto lab10 ; 
  7896.     } 
  7897.     break ; 
  7898.       case 1 : 
  7899.     {
  7900.       if ( ( preambleptr == maxbibfiles ) ) 
  7901.       {
  7902.         {
  7903.           (void) fprintf( logfile , "%s%ld%s",  "You've exceeded " , (long)maxbibfiles ,               " preamble commands" ) ; 
  7904.           (void) fprintf( stdout , "%s%ld%s",  "You've exceeded " , (long)maxbibfiles ,               " preamble commands" ) ; 
  7905.         } 
  7906.         biberrprint () ; 
  7907.         goto lab10 ; 
  7908.       } 
  7909.       {
  7910.         if ( ( ! eatbibwhitespace () ) ) 
  7911.         {
  7912.           eatbibprint () ; 
  7913.           goto lab10 ; 
  7914.         } 
  7915.       } 
  7916.       if ( ( buffer [ bufptr2 ] == 123 ) ) 
  7917.       rightouterdelim = 125 ; 
  7918.       else if ( ( buffer [ bufptr2 ] == 40 ) ) 
  7919.       rightouterdelim = 41 ; 
  7920.       else {
  7921.           
  7922.         biboneoftwoprint ( 123 , 40 ) ; 
  7923.         goto lab10 ; 
  7924.       } 
  7925.       incr ( bufptr2 ) ; 
  7926.       {
  7927.         if ( ( ! eatbibwhitespace () ) ) 
  7928.         {
  7929.           eatbibprint () ; 
  7930.           goto lab10 ; 
  7931.         } 
  7932.       } 
  7933.       storefield = true ; 
  7934.       if ( ( ! scanandstorethefield () ) ) 
  7935.       goto lab10 ; 
  7936.       if ( ( buffer [ bufptr2 ] != rightouterdelim ) ) 
  7937.       {
  7938.         {
  7939.           (void) fprintf( logfile , "%s%c%s",  "Missing \"" , xchr [ rightouterdelim ] ,               "\" in preamble command" ) ; 
  7940.           (void) fprintf( stdout , "%s%c%s",  "Missing \"" , xchr [ rightouterdelim ] ,               "\" in preamble command" ) ; 
  7941.         } 
  7942.         biberrprint () ; 
  7943.         goto lab10 ; 
  7944.       } 
  7945.       incr ( bufptr2 ) ; 
  7946.       goto lab10 ; 
  7947.     } 
  7948.     break ; 
  7949.       case 2 : 
  7950.     {
  7951.       {
  7952.         if ( ( ! eatbibwhitespace () ) ) 
  7953.         {
  7954.           eatbibprint () ; 
  7955.           goto lab10 ; 
  7956.         } 
  7957.       } 
  7958.       {
  7959.         if ( ( buffer [ bufptr2 ] == 123 ) ) 
  7960.         rightouterdelim = 125 ; 
  7961.         else if ( ( buffer [ bufptr2 ] == 40 ) ) 
  7962.         rightouterdelim = 41 ; 
  7963.         else {
  7964.         
  7965.           biboneoftwoprint ( 123 , 40 ) ; 
  7966.           goto lab10 ; 
  7967.         } 
  7968.         incr ( bufptr2 ) ; 
  7969.         {
  7970.           if ( ( ! eatbibwhitespace () ) ) 
  7971.           {
  7972.         eatbibprint () ; 
  7973.         goto lab10 ; 
  7974.           } 
  7975.         } 
  7976.         scanidentifier ( 61 , 61 , 61 ) ; 
  7977.         {
  7978.           if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  7979.           ; 
  7980.           else {
  7981.           
  7982.         bibidprint () ; 
  7983.         {
  7984.           {
  7985.             (void) Fputs( logfile ,  "a string name" ) ; 
  7986.             (void) Fputs( stdout ,  "a string name" ) ; 
  7987.           } 
  7988.           biberrprint () ; 
  7989.           goto lab10 ; 
  7990.         } 
  7991.           } 
  7992.         } 
  7993.         {
  7994.     ;
  7995. #ifdef TRACE
  7996.           {
  7997.         outtoken ( logfile ) ; 
  7998.           } 
  7999.           {
  8000.         (void) fprintf( logfile , "%s\n",  " is a database-defined macro" ) ; 
  8001.           } 
  8002. #endif /* TRACE */
  8003.           lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  8004.           curmacroloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 
  8005.           ) , 13 , true ) ; 
  8006.           ilkinfo [ curmacroloc ] = hashtext [ curmacroloc ] ; 
  8007.         } 
  8008.       } 
  8009.       {
  8010.         if ( ( ! eatbibwhitespace () ) ) 
  8011.         {
  8012.           eatbibprint () ; 
  8013.           goto lab10 ; 
  8014.         } 
  8015.       } 
  8016.       {
  8017.         if ( ( buffer [ bufptr2 ] != 61 ) ) 
  8018.         {
  8019.           bibequalssignprint () ; 
  8020.           goto lab10 ; 
  8021.         } 
  8022.         incr ( bufptr2 ) ; 
  8023.         {
  8024.           if ( ( ! eatbibwhitespace () ) ) 
  8025.           {
  8026.         eatbibprint () ; 
  8027.         goto lab10 ; 
  8028.           } 
  8029.         } 
  8030.         storefield = true ; 
  8031.         if ( ( ! scanandstorethefield () ) ) 
  8032.         goto lab10 ; 
  8033.         if ( ( buffer [ bufptr2 ] != rightouterdelim ) ) 
  8034.         {
  8035.           {
  8036.         (void) fprintf( logfile , "%s%c%s",  "Missing \"" , xchr [ rightouterdelim ] ,                 "\" in string command" ) ; 
  8037.         (void) fprintf( stdout , "%s%c%s",  "Missing \"" , xchr [ rightouterdelim ] ,                 "\" in string command" ) ; 
  8038.           } 
  8039.           biberrprint () ; 
  8040.           goto lab10 ; 
  8041.         } 
  8042.         incr ( bufptr2 ) ; 
  8043.       } 
  8044.       goto lab10 ; 
  8045.     } 
  8046.     break ; 
  8047.     default: 
  8048.     bibcmdconfusion () ; 
  8049.     break ; 
  8050.       } 
  8051.     } 
  8052.     else {
  8053.     
  8054.       entrytypeloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 
  8055.       , false ) ; 
  8056.       if ( ( ( ! hashfound ) || ( fntype [ entrytypeloc ] != 1 ) ) ) 
  8057.       typeexists = false ; 
  8058.       else typeexists = true ; 
  8059.     } 
  8060.   } 
  8061.   {
  8062.     if ( ( ! eatbibwhitespace () ) ) 
  8063.     {
  8064.       eatbibprint () ; 
  8065.       goto lab10 ; 
  8066.     } 
  8067.   } 
  8068.   {
  8069.     if ( ( buffer [ bufptr2 ] == 123 ) ) 
  8070.     rightouterdelim = 125 ; 
  8071.     else if ( ( buffer [ bufptr2 ] == 40 ) ) 
  8072.     rightouterdelim = 41 ; 
  8073.     else {
  8074.     
  8075.       biboneoftwoprint ( 123 , 40 ) ; 
  8076.       goto lab10 ; 
  8077.     } 
  8078.     incr ( bufptr2 ) ; 
  8079.     {
  8080.       if ( ( ! eatbibwhitespace () ) ) 
  8081.       {
  8082.     eatbibprint () ; 
  8083.     goto lab10 ; 
  8084.       } 
  8085.     } 
  8086.     if ( ( rightouterdelim == 41 ) ) 
  8087.     {
  8088.       if ( ( scan1white ( 44 ) ) ) 
  8089.       ; 
  8090.     } 
  8091.     else if ( ( scan2white ( 44 , 125 ) ) ) 
  8092.     ; 
  8093.     {
  8094.     ;
  8095. #ifdef TRACE
  8096.       {
  8097.     outtoken ( logfile ) ; 
  8098.       } 
  8099.       {
  8100.     (void) fprintf( logfile , "%s\n",  " is a database key" ) ; 
  8101.       } 
  8102. #endif /* TRACE */
  8103.       tmpptr = bufptr1 ; 
  8104.       while ( ( tmpptr < bufptr2 ) ) {
  8105.       
  8106.     exbuf [ tmpptr ] = buffer [ tmpptr ] ; 
  8107.     incr ( tmpptr ) ; 
  8108.       } 
  8109.       lowercase ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  8110.       if ( ( allentries ) ) 
  8111.       lcciteloc = strlookup ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) , 10 , 
  8112.       true ) ; 
  8113.       else lcciteloc = strlookup ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) , 
  8114.       10 , false ) ; 
  8115.       if ( ( hashfound ) ) 
  8116.       {
  8117.     entryciteptr = ilkinfo [ ilkinfo [ lcciteloc ] ] ; 
  8118.     {
  8119.       if ( ( ( ! allentries ) || ( entryciteptr < allmarker ) || ( 
  8120.       entryciteptr >= oldnumcites ) ) ) 
  8121.       {
  8122.         if ( ( typelist [ entryciteptr ] == 0 ) ) 
  8123.         {
  8124.           {
  8125.         if ( ( ( ! allentries ) && ( entryciteptr >= oldnumcites ) ) ) 
  8126.         {
  8127.           citeloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 
  8128.           ) , 9 , true ) ; 
  8129.           if ( ( ! hashfound ) ) 
  8130.           {
  8131.             ilkinfo [ lcciteloc ] = citeloc ; 
  8132.             ilkinfo [ citeloc ] = entryciteptr ; 
  8133.             citelist [ entryciteptr ] = hashtext [ citeloc ] ; 
  8134.             hashfound = true ; 
  8135.           } 
  8136.         } 
  8137.           } 
  8138.           goto lab26 ; 
  8139.         } 
  8140.       } 
  8141.       else if ( ( ! entryexists [ entryciteptr ] ) ) 
  8142.       {
  8143.         {
  8144.           exbufptr = 0 ; 
  8145.           tmpptr = strstart [ citeinfo [ entryciteptr ] ] ; 
  8146.           tmpendptr = strstart [ citeinfo [ entryciteptr ] + 1 ] ; 
  8147.           while ( ( tmpptr < tmpendptr ) ) {
  8148.           
  8149.         exbuf [ exbufptr ] = strpool [ tmpptr ] ; 
  8150.         incr ( exbufptr ) ; 
  8151.         incr ( tmpptr ) ; 
  8152.           } 
  8153.           lowercase ( exbuf , 0 , ( strstart [ citeinfo [ entryciteptr ] + 
  8154.           1 ] - strstart [ citeinfo [ entryciteptr ] ] ) ) ; 
  8155.           lcxciteloc = strlookup ( exbuf , 0 , ( strstart [ citeinfo [ 
  8156.           entryciteptr ] + 1 ] - strstart [ citeinfo [ entryciteptr ] ] ) 
  8157.           , 10 , false ) ; 
  8158.           if ( ( ! hashfound ) ) 
  8159.           citekeydisappearedco () ; 
  8160.         } 
  8161.         if ( ( lcxciteloc == lcciteloc ) ) 
  8162.         goto lab26 ; 
  8163.       } 
  8164.       if ( ( typelist [ entryciteptr ] == 0 ) ) 
  8165.       {
  8166.         {
  8167.           (void) Fputs( logfile ,  "The cite list is messed up" ) ; 
  8168.           (void) Fputs( stdout ,  "The cite list is messed up" ) ; 
  8169.         } 
  8170.         printconfusion () ; 
  8171.         longjmp(jmp9998,1) ; 
  8172.       } 
  8173.       {
  8174.         {
  8175.           (void) Fputs( logfile ,  "Repeated entry" ) ; 
  8176.           (void) Fputs( stdout ,  "Repeated entry" ) ; 
  8177.         } 
  8178.         biberrprint () ; 
  8179.         goto lab10 ; 
  8180.       } 
  8181.       lab26: ; 
  8182.     } 
  8183.       } 
  8184.       storeentry = true ; 
  8185.       if ( ( allentries ) ) 
  8186.       {
  8187.     if ( ( hashfound ) ) 
  8188.     {
  8189.       if ( ( entryciteptr < allmarker ) ) 
  8190.       goto lab22 ; 
  8191.       else {
  8192.           
  8193.         entryexists [ entryciteptr ] = true ; 
  8194.         citeloc = ilkinfo [ lcciteloc ] ; 
  8195.       } 
  8196.     } 
  8197.     else {
  8198.         
  8199.       citeloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 9 , 
  8200.       true ) ; 
  8201.       if ( ( hashfound ) ) 
  8202.       hashciteconfusion () ; 
  8203.     } 
  8204.     entryciteptr = citeptr ; 
  8205.     adddatabasecite ( citeptr ) ; 
  8206.     lab22: ; 
  8207.       } 
  8208.       else if ( ( ! hashfound ) ) 
  8209.       storeentry = false ; 
  8210.       if ( ( storeentry ) ) 
  8211.       {
  8212.     if ( ( typeexists ) ) 
  8213.     typelist [ entryciteptr ] = entrytypeloc ; 
  8214.     else {
  8215.         
  8216.       typelist [ entryciteptr ] = 5001 ; 
  8217.       {
  8218.         (void) Fputs( logfile ,  "Warning--entry type for \"" ) ; 
  8219.         (void) Fputs( stdout ,  "Warning--entry type for \"" ) ; 
  8220.       } 
  8221.       printatoken () ; 
  8222.       {
  8223.         {
  8224.           (void) fprintf( logfile , "%s\n",  "\" isn't style-file defined" ) ; 
  8225.           (void) fprintf( stdout , "%s\n",  "\" isn't style-file defined" ) ; 
  8226.         } 
  8227.         bibwarnprint () ; 
  8228.       } 
  8229.     } 
  8230.       } 
  8231.     } 
  8232.   } 
  8233.   {
  8234.     if ( ( ! eatbibwhitespace () ) ) 
  8235.     {
  8236.       eatbibprint () ; 
  8237.       goto lab10 ; 
  8238.     } 
  8239.   } 
  8240.   {
  8241.     while ( ( buffer [ bufptr2 ] != rightouterdelim ) ) {
  8242.     
  8243.       if ( ( buffer [ bufptr2 ] != 44 ) ) 
  8244.       {
  8245.     biboneoftwoprint ( 44 , rightouterdelim ) ; 
  8246.     goto lab10 ; 
  8247.       } 
  8248.       incr ( bufptr2 ) ; 
  8249.       {
  8250.     if ( ( ! eatbibwhitespace () ) ) 
  8251.     {
  8252.       eatbibprint () ; 
  8253.       goto lab10 ; 
  8254.     } 
  8255.       } 
  8256.       if ( ( buffer [ bufptr2 ] == rightouterdelim ) ) 
  8257.       goto lab15 ; 
  8258.       {
  8259.     scanidentifier ( 61 , 61 , 61 ) ; 
  8260.     {
  8261.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  8262.       ; 
  8263.       else {
  8264.           
  8265.         bibidprint () ; 
  8266.         {
  8267.           {
  8268.         (void) Fputs( logfile ,  "a field name" ) ; 
  8269.         (void) Fputs( stdout ,  "a field name" ) ; 
  8270.           } 
  8271.           biberrprint () ; 
  8272.           goto lab10 ; 
  8273.         } 
  8274.       } 
  8275.     } 
  8276.     ;
  8277. #ifdef TRACE
  8278.     {
  8279.       outtoken ( logfile ) ; 
  8280.     } 
  8281.     {
  8282.       (void) fprintf( logfile , "%s\n",  " is a field name" ) ; 
  8283.     } 
  8284. #endif /* TRACE */
  8285.     storefield = false ; 
  8286.     if ( ( storeentry ) ) 
  8287.     {
  8288.       lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  8289.       fieldnameloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) 
  8290.       , 11 , false ) ; 
  8291.       if ( ( hashfound ) ) 
  8292.       if ( ( fntype [ fieldnameloc ] == 4 ) ) 
  8293.       storefield = true ; 
  8294.     } 
  8295.     {
  8296.       if ( ( ! eatbibwhitespace () ) ) 
  8297.       {
  8298.         eatbibprint () ; 
  8299.         goto lab10 ; 
  8300.       } 
  8301.     } 
  8302.     if ( ( buffer [ bufptr2 ] != 61 ) ) 
  8303.     {
  8304.       bibequalssignprint () ; 
  8305.       goto lab10 ; 
  8306.     } 
  8307.     incr ( bufptr2 ) ; 
  8308.       } 
  8309.       {
  8310.     if ( ( ! eatbibwhitespace () ) ) 
  8311.     {
  8312.       eatbibprint () ; 
  8313.       goto lab10 ; 
  8314.     } 
  8315.       } 
  8316.       if ( ( ! scanandstorethefield () ) ) 
  8317.       goto lab10 ; 
  8318.     } 
  8319.     lab15: incr ( bufptr2 ) ; 
  8320.   } 
  8321.   lab10: ; 
  8322. void bstreadcommand ( ) 
  8323. {/* 10 */ if ( ( readseen ) ) 
  8324.   {
  8325.     {
  8326.       (void) Fputs( logfile ,  "Illegal, another read command" ) ; 
  8327.       (void) Fputs( stdout ,  "Illegal, another read command" ) ; 
  8328.     } 
  8329.     {
  8330.       bsterrprintandlookfo () ; 
  8331.       goto lab10 ; 
  8332.     } 
  8333.   } 
  8334.   readseen = true ; 
  8335.   if ( ( ! entryseen ) ) 
  8336.   {
  8337.     {
  8338.       (void) Fputs( logfile ,  "Illegal, read command before entry command" ) ; 
  8339.       (void) Fputs( stdout ,  "Illegal, read command before entry command" ) ; 
  8340.     } 
  8341.     {
  8342.       bsterrprintandlookfo () ; 
  8343.       goto lab10 ; 
  8344.     } 
  8345.   } 
  8346.   svptr1 = bufptr2 ; 
  8347.   svptr2 = last ; 
  8348.   tmpptr = svptr1 ; 
  8349.   while ( ( tmpptr < svptr2 ) ) {
  8350.       
  8351.     svbuffer [ tmpptr ] = buffer [ tmpptr ] ; 
  8352.     incr ( tmpptr ) ; 
  8353.   } 
  8354.   {
  8355.     {
  8356.       {
  8357.     checkfieldoverflow ( numfields * numcites ) ; 
  8358.     fieldptr = 0 ; 
  8359.     while ( ( fieldptr < maxfields ) ) {
  8360.         
  8361.       fieldinfo [ fieldptr ] = 0 ; 
  8362.       incr ( fieldptr ) ; 
  8363.     } 
  8364.       } 
  8365.       {
  8366.     citeptr = 0 ; 
  8367.     while ( ( citeptr < maxcites ) ) {
  8368.         
  8369.       typelist [ citeptr ] = 0 ; 
  8370.       citeinfo [ citeptr ] = 0 ; 
  8371.       incr ( citeptr ) ; 
  8372.     } 
  8373.     oldnumcites = numcites ; 
  8374.     if ( ( allentries ) ) 
  8375.     {
  8376.       citeptr = allmarker ; 
  8377.       while ( ( citeptr < oldnumcites ) ) {
  8378.           
  8379.         citeinfo [ citeptr ] = citelist [ citeptr ] ; 
  8380.         entryexists [ citeptr ] = false ; 
  8381.         incr ( citeptr ) ; 
  8382.       } 
  8383.       citeptr = allmarker ; 
  8384.     } 
  8385.     else {
  8386.         
  8387.       citeptr = numcites ; 
  8388.       allmarker = 0 ; 
  8389.     } 
  8390.       } 
  8391.     } 
  8392.     readperformed = true ; 
  8393.     bibptr = 0 ; 
  8394.     while ( ( bibptr < numbibfiles ) ) {
  8395.     
  8396.       {
  8397.     (void) fprintf( logfile , "%s%ld%s",  "Database file #" , (long)bibptr + 1 , ": " ) ; 
  8398.     (void) fprintf( stdout , "%s%ld%s",  "Database file #" , (long)bibptr + 1 , ": " ) ; 
  8399.       } 
  8400.       printbibname () ; 
  8401.       biblinenum = 0 ; 
  8402.       bufptr2 = last ; 
  8403.       while ( ( ! eof ( bibfile [ bibptr ] ) ) ) getbibcommandorentry () ; 
  8404.       aclose ( bibfile [ bibptr ] ) ; 
  8405.       incr ( bibptr ) ; 
  8406.     } 
  8407.     readingcompleted = true ; 
  8408.     ;
  8409. #ifdef TRACE
  8410.     {
  8411.       (void) fprintf( logfile , "%s\n",  "Finished reading the database file(s)" ) ; 
  8412.     } 
  8413. #endif /* TRACE */
  8414.     {
  8415.       numcites = citeptr ; 
  8416.       numpreamblestrings = preambleptr ; 
  8417.       {
  8418.     citeptr = 0 ; 
  8419.     while ( ( citeptr < numcites ) ) {
  8420.         
  8421.       fieldptr = citeptr * numfields + crossrefnum ; 
  8422.       if ( ( fieldinfo [ fieldptr ] != 0 ) ) 
  8423.       if ( ( findcitelocsforthisc ( fieldinfo [ fieldptr ] ) ) ) 
  8424.       {
  8425.         citeloc = ilkinfo [ lcciteloc ] ; 
  8426.         fieldinfo [ fieldptr ] = hashtext [ citeloc ] ; 
  8427.         citeparentptr = ilkinfo [ citeloc ] ; 
  8428.         fieldptr = citeptr * numfields + numpredefinedfields ; 
  8429.         fieldendptr = fieldptr - numpredefinedfields + numfields ; 
  8430.         fieldparentptr = citeparentptr * numfields + numpredefinedfields ; 
  8431.         while ( ( fieldptr < fieldendptr ) ) {
  8432.         
  8433.           if ( ( fieldinfo [ fieldptr ] == 0 ) ) 
  8434.           fieldinfo [ fieldptr ] = fieldinfo [ fieldparentptr ] ; 
  8435.           incr ( fieldptr ) ; 
  8436.           incr ( fieldparentptr ) ; 
  8437.         } 
  8438.       } 
  8439.       incr ( citeptr ) ; 
  8440.     } 
  8441.       } 
  8442.       {
  8443.     citeptr = 0 ; 
  8444.     while ( ( citeptr < numcites ) ) {
  8445.         
  8446.       fieldptr = citeptr * numfields + crossrefnum ; 
  8447.       if ( ( fieldinfo [ fieldptr ] != 0 ) ) 
  8448.       if ( ( ! findcitelocsforthisc ( fieldinfo [ fieldptr ] ) ) ) 
  8449.       {
  8450.         if ( ( citehashfound ) ) 
  8451.         hashciteconfusion () ; 
  8452.         nonexistentcrossrefe () ; 
  8453.         fieldinfo [ fieldptr ] = 0 ; 
  8454.       } 
  8455.       else {
  8456.           
  8457.         if ( ( citeloc != ilkinfo [ lcciteloc ] ) ) 
  8458.         hashciteconfusion () ; 
  8459.         citeparentptr = ilkinfo [ citeloc ] ; 
  8460.         if ( ( typelist [ citeparentptr ] == 0 ) ) 
  8461.         {
  8462.           nonexistentcrossrefe () ; 
  8463.           fieldinfo [ fieldptr ] = 0 ; 
  8464.         } 
  8465.         else {
  8466.         
  8467.           fieldparentptr = citeparentptr * numfields + crossrefnum ; 
  8468.           if ( ( fieldinfo [ fieldparentptr ] != 0 ) ) 
  8469.           {
  8470.         {
  8471.           (void) Fputs( logfile ,  "Warning--you've nested cross references"                   ) ; 
  8472.           (void) Fputs( stdout ,  "Warning--you've nested cross references" ) 
  8473.           ; 
  8474.         } 
  8475.         badcrossreferencepri ( citelist [ citeparentptr ] ) ; 
  8476.         {
  8477.           (void) fprintf( logfile , "%s\n",  "\", which also refers to something" ) ; 
  8478.           (void) fprintf( stdout , "%s\n",  "\", which also refers to something" ) ; 
  8479.         } 
  8480.         markwarning () ; 
  8481.           } 
  8482.           if ( ( ( ! allentries ) && ( citeparentptr >= oldnumcites ) && ( 
  8483.           citeinfo [ citeparentptr ] < mincrossrefs ) ) ) 
  8484.           fieldinfo [ fieldptr ] = 0 ; 
  8485.         } 
  8486.       } 
  8487.       incr ( citeptr ) ; 
  8488.     } 
  8489.       } 
  8490.       {
  8491.     citeptr = 0 ; 
  8492.     while ( ( citeptr < numcites ) ) {
  8493.         
  8494.       if ( ( typelist [ citeptr ] == 0 ) ) 
  8495.       printmissingentry ( citelist [ citeptr ] ) ; 
  8496.       else if ( ( ( allentries ) || ( citeptr < oldnumcites ) || ( 
  8497.       citeinfo [ citeptr ] >= mincrossrefs ) ) ) 
  8498.       {
  8499.         if ( ( citeptr > citexptr ) ) 
  8500.         {
  8501.           citelist [ citexptr ] = citelist [ citeptr ] ; 
  8502.           typelist [ citexptr ] = typelist [ citeptr ] ; 
  8503.           if ( ( ! findcitelocsforthisc ( citelist [ citeptr ] ) ) ) 
  8504.           citekeydisappearedco () ; 
  8505.           if ( ( ( ! citehashfound ) || ( citeloc != ilkinfo [ lcciteloc ] 
  8506.           ) ) ) 
  8507.           hashciteconfusion () ; 
  8508.           ilkinfo [ citeloc ] = citexptr ; 
  8509.           fieldptr = citexptr * numfields ; 
  8510.           fieldendptr = fieldptr + numfields ; 
  8511.           tmpptr = citeptr * numfields ; 
  8512.           while ( ( fieldptr < fieldendptr ) ) {
  8513.           
  8514.         fieldinfo [ fieldptr ] = fieldinfo [ tmpptr ] ; 
  8515.         incr ( fieldptr ) ; 
  8516.         incr ( tmpptr ) ; 
  8517.           } 
  8518.         } 
  8519.         incr ( citexptr ) ; 
  8520.       } 
  8521.       incr ( citeptr ) ; 
  8522.     } 
  8523.     numcites = citexptr ; 
  8524.     if ( ( allentries ) ) 
  8525.     {
  8526.       citeptr = allmarker ; 
  8527.       while ( ( citeptr < oldnumcites ) ) {
  8528.           
  8529.         if ( ( ! entryexists [ citeptr ] ) ) 
  8530.         printmissingentry ( citeinfo [ citeptr ] ) ; 
  8531.         incr ( citeptr ) ; 
  8532.       } 
  8533.     } 
  8534.       } 
  8535.       {
  8536.     if ( ( numentints * numcites > maxentints ) ) 
  8537.     {
  8538.       {
  8539.         (void) fprintf( logfile , "%ld%s",  (long)numentints * numcites , ": " ) ; 
  8540.         (void) fprintf( stdout , "%ld%s",  (long)numentints * numcites , ": " ) ; 
  8541.       } 
  8542.       {
  8543.         printoverflow () ; 
  8544.         {
  8545.           (void) fprintf( logfile , "%s%ld\n",  "total number of integer entry-variables " ,               (long)maxentints ) ; 
  8546.           (void) fprintf( stdout , "%s%ld\n",  "total number of integer entry-variables " ,               (long)maxentints ) ; 
  8547.         } 
  8548.         longjmp(jmp9998,1) ; 
  8549.       } 
  8550.     } 
  8551.     intentptr = 0 ; 
  8552.     while ( ( intentptr < numentints * numcites ) ) {
  8553.         
  8554.       entryints [ intentptr ] = 0 ; 
  8555.       incr ( intentptr ) ; 
  8556.     } 
  8557.       } 
  8558.       {
  8559.     if ( ( numentstrs * numcites > maxentstrs ) ) 
  8560.     {
  8561.       {
  8562.         (void) fprintf( logfile , "%ld%s",  (long)numentstrs * numcites , ": " ) ; 
  8563.         (void) fprintf( stdout , "%ld%s",  (long)numentstrs * numcites , ": " ) ; 
  8564.       } 
  8565.       {
  8566.         printoverflow () ; 
  8567.         {
  8568.           (void) fprintf( logfile , "%s%ld\n",  "total number of string entry-variables " ,               (long)maxentstrs ) ; 
  8569.           (void) fprintf( stdout , "%s%ld\n",  "total number of string entry-variables " ,               (long)maxentstrs ) ; 
  8570.         } 
  8571.         longjmp(jmp9998,1) ; 
  8572.       } 
  8573.     } 
  8574.     strentptr = 0 ; 
  8575.     while ( ( strentptr < numentstrs * numcites ) ) {
  8576.         
  8577.       entrystrs [ strentptr ] [ 0 ] = 127 ; 
  8578.       incr ( strentptr ) ; 
  8579.     } 
  8580.       } 
  8581.       {
  8582.     citeptr = 0 ; 
  8583.     while ( ( citeptr < numcites ) ) {
  8584.         
  8585.       citeinfo [ citeptr ] = citeptr ; 
  8586.       incr ( citeptr ) ; 
  8587.     } 
  8588.       } 
  8589.     } 
  8590.     readcompleted = true ; 
  8591.   } 
  8592.   bufptr2 = svptr1 ; 
  8593.   last = svptr2 ; 
  8594.   tmpptr = bufptr2 ; 
  8595.   while ( ( tmpptr < last ) ) {
  8596.       
  8597.     buffer [ tmpptr ] = svbuffer [ tmpptr ] ; 
  8598.     incr ( tmpptr ) ; 
  8599.   } 
  8600.   lab10: ; 
  8601. void bstreversecommand ( ) 
  8602. {/* 10 */ if ( ( ! readseen ) ) 
  8603.   {
  8604.     {
  8605.       (void) Fputs( logfile ,  "Illegal, reverse command before read command" ) ; 
  8606.       (void) Fputs( stdout ,  "Illegal, reverse command before read command" ) ; 
  8607.     } 
  8608.     {
  8609.       bsterrprintandlookfo () ; 
  8610.       goto lab10 ; 
  8611.     } 
  8612.   } 
  8613.   {
  8614.     if ( ( ! eatbstwhitespace () ) ) 
  8615.     {
  8616.       eatbstprint () ; 
  8617.       {
  8618.     {
  8619.       (void) Fputs( logfile ,  "reverse" ) ; 
  8620.       (void) Fputs( stdout ,  "reverse" ) ; 
  8621.     } 
  8622.     {
  8623.       bsterrprintandlookfo () ; 
  8624.       goto lab10 ; 
  8625.     } 
  8626.       } 
  8627.     } 
  8628.   } 
  8629.   {
  8630.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  8631.     {
  8632.       bstleftbraceprint () ; 
  8633.       {
  8634.     {
  8635.       (void) Fputs( logfile ,  "reverse" ) ; 
  8636.       (void) Fputs( stdout ,  "reverse" ) ; 
  8637.     } 
  8638.     {
  8639.       bsterrprintandlookfo () ; 
  8640.       goto lab10 ; 
  8641.     } 
  8642.       } 
  8643.     } 
  8644.     incr ( bufptr2 ) ; 
  8645.   } 
  8646.   {
  8647.     if ( ( ! eatbstwhitespace () ) ) 
  8648.     {
  8649.       eatbstprint () ; 
  8650.       {
  8651.     {
  8652.       (void) Fputs( logfile ,  "reverse" ) ; 
  8653.       (void) Fputs( stdout ,  "reverse" ) ; 
  8654.     } 
  8655.     {
  8656.       bsterrprintandlookfo () ; 
  8657.       goto lab10 ; 
  8658.     } 
  8659.       } 
  8660.     } 
  8661.   } 
  8662.   {
  8663.     scanidentifier ( 125 , 37 , 37 ) ; 
  8664.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  8665.     ; 
  8666.     else {
  8667.     
  8668.       bstidprint () ; 
  8669.       {
  8670.     {
  8671.       (void) Fputs( logfile ,  "reverse" ) ; 
  8672.       (void) Fputs( stdout ,  "reverse" ) ; 
  8673.     } 
  8674.     {
  8675.       bsterrprintandlookfo () ; 
  8676.       goto lab10 ; 
  8677.     } 
  8678.       } 
  8679.     } 
  8680.   } 
  8681.   {
  8682.     ;
  8683. #ifdef TRACE
  8684.     {
  8685.       outtoken ( logfile ) ; 
  8686.     } 
  8687.     {
  8688.       (void) fprintf( logfile , "%s\n",  " is a to be iterated in reverse function" ) ; 
  8689.     } 
  8690. #endif /* TRACE */
  8691.     if ( ( badargumenttoken () ) ) 
  8692.     goto lab10 ; 
  8693.   } 
  8694.   {
  8695.     if ( ( ! eatbstwhitespace () ) ) 
  8696.     {
  8697.       eatbstprint () ; 
  8698.       {
  8699.     {
  8700.       (void) Fputs( logfile ,  "reverse" ) ; 
  8701.       (void) Fputs( stdout ,  "reverse" ) ; 
  8702.     } 
  8703.     {
  8704.       bsterrprintandlookfo () ; 
  8705.       goto lab10 ; 
  8706.     } 
  8707.       } 
  8708.     } 
  8709.   } 
  8710.   {
  8711.     if ( ( buffer [ bufptr2 ] != 125 ) ) 
  8712.     {
  8713.       bstrightbraceprint () ; 
  8714.       {
  8715.     {
  8716.       (void) Fputs( logfile ,  "reverse" ) ; 
  8717.       (void) Fputs( stdout ,  "reverse" ) ; 
  8718.     } 
  8719.     {
  8720.       bsterrprintandlookfo () ; 
  8721.       goto lab10 ; 
  8722.     } 
  8723.       } 
  8724.     } 
  8725.     incr ( bufptr2 ) ; 
  8726.   } 
  8727.   {
  8728.     initcommandexecution () ; 
  8729.     messwithentries = true ; 
  8730.     if ( ( numcites > 0 ) ) 
  8731.     {
  8732.       sortciteptr = numcites ; 
  8733.       do {
  8734.       decr ( sortciteptr ) ; 
  8735.     citeptr = citeinfo [ sortciteptr ] ; 
  8736.     ;
  8737. #ifdef TRACE
  8738.     {
  8739.       outpoolstr ( logfile , hashtext [ fnloc ] ) ; 
  8740.     } 
  8741.     {
  8742.       (void) Fputs( logfile ,  " to be iterated in reverse on " ) ; 
  8743.     } 
  8744.     {
  8745.       outpoolstr ( logfile , citelist [ citeptr ] ) ; 
  8746.     } 
  8747.     {
  8748.       (void) putc('\n',  logfile );
  8749.     } 
  8750. #endif /* TRACE */
  8751.     executefn ( fnloc ) ; 
  8752.     checkcommandexecutio () ; 
  8753.       } while ( ! ( ( sortciteptr == 0 ) ) ) ; 
  8754.     } 
  8755.   } 
  8756.   lab10: ; 
  8757. void bstsortcommand ( ) 
  8758. {/* 10 */ if ( ( ! readseen ) ) 
  8759.   {
  8760.     {
  8761.       (void) Fputs( logfile ,  "Illegal, sort command before read command" ) ; 
  8762.       (void) Fputs( stdout ,  "Illegal, sort command before read command" ) ; 
  8763.     } 
  8764.     {
  8765.       bsterrprintandlookfo () ; 
  8766.       goto lab10 ; 
  8767.     } 
  8768.   } 
  8769.   {
  8770.     ;
  8771. #ifdef TRACE
  8772.     {
  8773.       (void) fprintf( logfile , "%s\n",  "Sorting the entries" ) ; 
  8774.     } 
  8775. #endif /* TRACE */
  8776.     if ( ( numcites > 1 ) ) 
  8777.     quicksort ( 0 , numcites - 1 ) ; 
  8778.     ;
  8779. #ifdef TRACE
  8780.     {
  8781.       (void) fprintf( logfile , "%s\n",  "Done sorting" ) ; 
  8782.     } 
  8783. #endif /* TRACE */
  8784.   } 
  8785.   lab10: ; 
  8786. void bststringscommand ( ) 
  8787. {/* 10 */ {
  8788.     
  8789.     if ( ( ! eatbstwhitespace () ) ) 
  8790.     {
  8791.       eatbstprint () ; 
  8792.       {
  8793.     {
  8794.       (void) Fputs( logfile ,  "strings" ) ; 
  8795.       (void) Fputs( stdout ,  "strings" ) ; 
  8796.     } 
  8797.     {
  8798.       bsterrprintandlookfo () ; 
  8799.       goto lab10 ; 
  8800.     } 
  8801.       } 
  8802.     } 
  8803.   } 
  8804.   {
  8805.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  8806.     {
  8807.       bstleftbraceprint () ; 
  8808.       {
  8809.     {
  8810.       (void) Fputs( logfile ,  "strings" ) ; 
  8811.       (void) Fputs( stdout ,  "strings" ) ; 
  8812.     } 
  8813.     {
  8814.       bsterrprintandlookfo () ; 
  8815.       goto lab10 ; 
  8816.     } 
  8817.       } 
  8818.     } 
  8819.     incr ( bufptr2 ) ; 
  8820.   } 
  8821.   {
  8822.     if ( ( ! eatbstwhitespace () ) ) 
  8823.     {
  8824.       eatbstprint () ; 
  8825.       {
  8826.     {
  8827.       (void) Fputs( logfile ,  "strings" ) ; 
  8828.       (void) Fputs( stdout ,  "strings" ) ; 
  8829.     } 
  8830.     {
  8831.       bsterrprintandlookfo () ; 
  8832.       goto lab10 ; 
  8833.     } 
  8834.       } 
  8835.     } 
  8836.   } 
  8837.   while ( ( buffer [ bufptr2 ] != 125 ) ) {
  8838.       
  8839.     {
  8840.       scanidentifier ( 125 , 37 , 37 ) ; 
  8841.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  8842.       ; 
  8843.       else {
  8844.       
  8845.     bstidprint () ; 
  8846.     {
  8847.       {
  8848.         (void) Fputs( logfile ,  "strings" ) ; 
  8849.         (void) Fputs( stdout ,  "strings" ) ; 
  8850.       } 
  8851.       {
  8852.         bsterrprintandlookfo () ; 
  8853.         goto lab10 ; 
  8854.       } 
  8855.     } 
  8856.       } 
  8857.     } 
  8858.     {
  8859.     ;
  8860. #ifdef TRACE
  8861.       {
  8862.     outtoken ( logfile ) ; 
  8863.       } 
  8864.       {
  8865.     (void) fprintf( logfile , "%s\n",  " is a string global-variable" ) ; 
  8866.       } 
  8867. #endif /* TRACE */
  8868.       lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  8869.       fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , true 
  8870.       ) ; 
  8871.       {
  8872.     if ( ( hashfound ) ) 
  8873.     {
  8874.       alreadyseenfunctionp ( fnloc ) ; 
  8875.       goto lab10 ; 
  8876.     } 
  8877.       } 
  8878.       fntype [ fnloc ] = 8 ; 
  8879.       ilkinfo [ fnloc ] = numglbstrs ; 
  8880.       if ( ( numglbstrs == 10 ) ) 
  8881.       {
  8882.     printoverflow () ; 
  8883.     {
  8884.       (void) fprintf( logfile , "%s%ld\n",  "number of string global-variables " , (long)10 ) ; 
  8885.       (void) fprintf( stdout , "%s%ld\n",  "number of string global-variables " , (long)10 ) ; 
  8886.     } 
  8887.     longjmp(jmp9998,1) ; 
  8888.       } 
  8889.       incr ( numglbstrs ) ; 
  8890.     } 
  8891.     {
  8892.       if ( ( ! eatbstwhitespace () ) ) 
  8893.       {
  8894.     eatbstprint () ; 
  8895.     {
  8896.       {
  8897.         (void) Fputs( logfile ,  "strings" ) ; 
  8898.         (void) Fputs( stdout ,  "strings" ) ; 
  8899.       } 
  8900.       {
  8901.         bsterrprintandlookfo () ; 
  8902.         goto lab10 ; 
  8903.       } 
  8904.     } 
  8905.       } 
  8906.     } 
  8907.   } 
  8908.   incr ( bufptr2 ) ; 
  8909.   lab10: ; 
  8910. void getbstcommandandproc ( ) 
  8911. {/* 10 */ if ( ( ! scanalpha () ) ) 
  8912.   {
  8913.     {
  8914.       (void) fprintf( logfile , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,       "\" can't start a style-file command" ) ; 
  8915.       (void) fprintf( stdout , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,       "\" can't start a style-file command" ) ; 
  8916.     } 
  8917.     {
  8918.       bsterrprintandlookfo () ; 
  8919.       goto lab10 ; 
  8920.     } 
  8921.   } 
  8922.   lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  8923.   commandnum = ilkinfo [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) 
  8924.   , 4 , false ) ] ; 
  8925.   if ( ( ! hashfound ) ) 
  8926.   {
  8927.     printatoken () ; 
  8928.     {
  8929.       {
  8930.     (void) Fputs( logfile ,  " is an illegal style-file command" ) ; 
  8931.     (void) Fputs( stdout ,  " is an illegal style-file command" ) ; 
  8932.       } 
  8933.       {
  8934.     bsterrprintandlookfo () ; 
  8935.     goto lab10 ; 
  8936.       } 
  8937.     } 
  8938.   } 
  8939.   switch ( ( commandnum ) ) 
  8940.   {case 0 : 
  8941.     bstentrycommand () ; 
  8942.     break ; 
  8943.   case 1 : 
  8944.     bstexecutecommand () ; 
  8945.     break ; 
  8946.   case 2 : 
  8947.     bstfunctioncommand () ; 
  8948.     break ; 
  8949.   case 3 : 
  8950.     bstintegerscommand () ; 
  8951.     break ; 
  8952.   case 4 : 
  8953.     bstiteratecommand () ; 
  8954.     break ; 
  8955.   case 5 : 
  8956.     bstmacrocommand () ; 
  8957.     break ; 
  8958.   case 6 : 
  8959.     bstreadcommand () ; 
  8960.     break ; 
  8961.   case 7 : 
  8962.     bstreversecommand () ; 
  8963.     break ; 
  8964.   case 8 : 
  8965.     bstsortcommand () ; 
  8966.     break ; 
  8967.   case 9 : 
  8968.     bststringscommand () ; 
  8969.     break ; 
  8970.     default: 
  8971.     {
  8972.       {
  8973.     (void) Fputs( logfile ,  "Unknown style-file command" ) ; 
  8974.     (void) Fputs( stdout ,  "Unknown style-file command" ) ; 
  8975.       } 
  8976.       printconfusion () ; 
  8977.       longjmp(jmp9998,1) ; 
  8978.     } 
  8979.     break ; 
  8980.   } 
  8981.   lab10: ; 
  8982. void initialize ( ) 
  8983. {schar i  ; 
  8984.   hashloc k  ; 
  8985.   bad = 0 ; 
  8986.   if ( ( minprintline < 3 ) ) 
  8987.   bad = 1 ; 
  8988.   if ( ( maxprintline <= minprintline ) ) 
  8989.   bad = 10 * bad + 2 ; 
  8990.   if ( ( maxprintline >= bufsize ) ) 
  8991.   bad = 10 * bad + 3 ; 
  8992.   if ( ( 4253 < 128 ) ) 
  8993.   bad = 10 * bad + 4 ; 
  8994.   if ( ( 4253 > 5000 ) ) 
  8995.   bad = 10 * bad + 5 ; 
  8996.   if ( ( 4253 >= ( 16320 ) ) ) 
  8997.   bad = 10 * bad + 6 ; 
  8998.   if ( ( maxstrings > 5000 ) ) 
  8999.   bad = 10 * bad + 7 ; 
  9000.   if ( ( maxcites > maxstrings ) ) 
  9001.   bad = 10 * bad + 8 ; 
  9002.   if ( ( entstrsize > bufsize ) ) 
  9003.   bad = 10 * bad + 9 ; 
  9004.   if ( ( globstrsize > bufsize ) ) 
  9005.   bad = 100 * bad + 11 ; 
  9006.   if ( ( 10 < 2 * 4 + 2 ) ) 
  9007.   bad = 100 * bad + 22 ; 
  9008.   if ( ( bad > 0 ) ) 
  9009.   {
  9010.     (void) fprintf( stdout , "%ld%s\n",  (long)bad , " is a bad bad" ) ; 
  9011.     uexit ( 0 ) ; 
  9012.   } 
  9013.   history = 0 ; 
  9014.   xchr [ 32 ] = ' ' ; 
  9015.   xchr [ 33 ] = '!' ; 
  9016.   xchr [ 34 ] = '"' ; 
  9017.   xchr [ 35 ] = '#' ; 
  9018.   xchr [ 36 ] = '$' ; 
  9019.   xchr [ 37 ] = '%' ; 
  9020.   xchr [ 38 ] = '&' ; 
  9021.   xchr [ 39 ] = '\'' ; 
  9022.   xchr [ 40 ] = '(' ; 
  9023.   xchr [ 41 ] = ')' ; 
  9024.   xchr [ 42 ] = '*' ; 
  9025.   xchr [ 43 ] = '+' ; 
  9026.   xchr [ 44 ] = ',' ; 
  9027.   xchr [ 45 ] = '-' ; 
  9028.   xchr [ 46 ] = '.' ; 
  9029.   xchr [ 47 ] = '/' ; 
  9030.   xchr [ 48 ] = '0' ; 
  9031.   xchr [ 49 ] = '1' ; 
  9032.   xchr [ 50 ] = '2' ; 
  9033.   xchr [ 51 ] = '3' ; 
  9034.   xchr [ 52 ] = '4' ; 
  9035.   xchr [ 53 ] = '5' ; 
  9036.   xchr [ 54 ] = '6' ; 
  9037.   xchr [ 55 ] = '7' ; 
  9038.   xchr [ 56 ] = '8' ; 
  9039.   xchr [ 57 ] = '9' ; 
  9040.   xchr [ 58 ] = ':' ; 
  9041.   xchr [ 59 ] = ';' ; 
  9042.   xchr [ 60 ] = '<' ; 
  9043.   xchr [ 61 ] = '=' ; 
  9044.   xchr [ 62 ] = '>' ; 
  9045.   xchr [ 63 ] = '?' ; 
  9046.   xchr [ 64 ] = '@' ; 
  9047.   xchr [ 65 ] = 'A' ; 
  9048.   xchr [ 66 ] = 'B' ; 
  9049.   xchr [ 67 ] = 'C' ; 
  9050.   xchr [ 68 ] = 'D' ; 
  9051.   xchr [ 69 ] = 'E' ; 
  9052.   xchr [ 70 ] = 'F' ; 
  9053.   xchr [ 71 ] = 'G' ; 
  9054.   xchr [ 72 ] = 'H' ; 
  9055.   xchr [ 73 ] = 'I' ; 
  9056.   xchr [ 74 ] = 'J' ; 
  9057.   xchr [ 75 ] = 'K' ; 
  9058.   xchr [ 76 ] = 'L' ; 
  9059.   xchr [ 77 ] = 'M' ; 
  9060.   xchr [ 78 ] = 'N' ; 
  9061.   xchr [ 79 ] = 'O' ; 
  9062.   xchr [ 80 ] = 'P' ; 
  9063.   xchr [ 81 ] = 'Q' ; 
  9064.   xchr [ 82 ] = 'R' ; 
  9065.   xchr [ 83 ] = 'S' ; 
  9066.   xchr [ 84 ] = 'T' ; 
  9067.   xchr [ 85 ] = 'U' ; 
  9068.   xchr [ 86 ] = 'V' ; 
  9069.   xchr [ 87 ] = 'W' ; 
  9070.   xchr [ 88 ] = 'X' ; 
  9071.   xchr [ 89 ] = 'Y' ; 
  9072.   xchr [ 90 ] = 'Z' ; 
  9073.   xchr [ 91 ] = '[' ; 
  9074.   xchr [ 92 ] = '\\' ; 
  9075.   xchr [ 93 ] = ']' ; 
  9076.   xchr [ 94 ] = '^' ; 
  9077.   xchr [ 95 ] = '_' ; 
  9078.   xchr [ 96 ] = '`' ; 
  9079.   xchr [ 97 ] = 'a' ; 
  9080.   xchr [ 98 ] = 'b' ; 
  9081.   xchr [ 99 ] = 'c' ; 
  9082.   xchr [ 100 ] = 'd' ; 
  9083.   xchr [ 101 ] = 'e' ; 
  9084.   xchr [ 102 ] = 'f' ; 
  9085.   xchr [ 103 ] = 'g' ; 
  9086.   xchr [ 104 ] = 'h' ; 
  9087.   xchr [ 105 ] = 'i' ; 
  9088.   xchr [ 106 ] = 'j' ; 
  9089.   xchr [ 107 ] = 'k' ; 
  9090.   xchr [ 108 ] = 'l' ; 
  9091.   xchr [ 109 ] = 'm' ; 
  9092.   xchr [ 110 ] = 'n' ; 
  9093.   xchr [ 111 ] = 'o' ; 
  9094.   xchr [ 112 ] = 'p' ; 
  9095.   xchr [ 113 ] = 'q' ; 
  9096.   xchr [ 114 ] = 'r' ; 
  9097.   xchr [ 115 ] = 's' ; 
  9098.   xchr [ 116 ] = 't' ; 
  9099.   xchr [ 117 ] = 'u' ; 
  9100.   xchr [ 118 ] = 'v' ; 
  9101.   xchr [ 119 ] = 'w' ; 
  9102.   xchr [ 120 ] = 'x' ; 
  9103.   xchr [ 121 ] = 'y' ; 
  9104.   xchr [ 122 ] = 'z' ; 
  9105.   xchr [ 123 ] = '{' ; 
  9106.   xchr [ 124 ] = '|' ; 
  9107.   xchr [ 125 ] = '}' ; 
  9108.   xchr [ 126 ] = '~' ; 
  9109.   xchr [ 0 ] = ' ' ; 
  9110.   xchr [ 127 ] = ' ' ; 
  9111.   {register integer for_end; i = 1 ; for_end = 31 ; if ( i <= for_end) do 
  9112.     xchr [ i ] = ' ' ; 
  9113.   while ( i++ < for_end ) ; } 
  9114.   xchr [ 9 ] = chr ( 9 ) ; 
  9115.   {register integer for_end; i = 0 ; for_end = 127 ; if ( i <= for_end) do 
  9116.     xord [ chr ( i ) ] = 127 ; 
  9117.   while ( i++ < for_end ) ; } 
  9118.   {register integer for_end; i = 1 ; for_end = 126 ; if ( i <= for_end) do 
  9119.     xord [ xchr [ i ] ] = i ; 
  9120.   while ( i++ < for_end ) ; } 
  9121.   {register integer for_end; i = 0 ; for_end = 127 ; if ( i <= for_end) do 
  9122.     lexclass [ i ] = 5 ; 
  9123.   while ( i++ < for_end ) ; } 
  9124.   {register integer for_end; i = 0 ; for_end = 31 ; if ( i <= for_end) do 
  9125.     lexclass [ i ] = 0 ; 
  9126.   while ( i++ < for_end ) ; } 
  9127.   lexclass [ 127 ] = 0 ; 
  9128.   lexclass [ 9 ] = 1 ; 
  9129.   lexclass [ 32 ] = 1 ; 
  9130.   lexclass [ 126 ] = 4 ; 
  9131.   lexclass [ 45 ] = 4 ; 
  9132.   {register integer for_end; i = 48 ; for_end = 57 ; if ( i <= for_end) do 
  9133.     lexclass [ i ] = 3 ; 
  9134.   while ( i++ < for_end ) ; } 
  9135.   {register integer for_end; i = 65 ; for_end = 90 ; if ( i <= for_end) do 
  9136.     lexclass [ i ] = 2 ; 
  9137.   while ( i++ < for_end ) ; } 
  9138.   {register integer for_end; i = 97 ; for_end = 122 ; if ( i <= for_end) do 
  9139.     lexclass [ i ] = 2 ; 
  9140.   while ( i++ < for_end ) ; } 
  9141.   {register integer for_end; i = 0 ; for_end = 127 ; if ( i <= for_end) do 
  9142.     idclass [ i ] = 1 ; 
  9143.   while ( i++ < for_end ) ; } 
  9144.   {register integer for_end; i = 0 ; for_end = 31 ; if ( i <= for_end) do 
  9145.     idclass [ i ] = 0 ; 
  9146.   while ( i++ < for_end ) ; } 
  9147.   idclass [ 32 ] = 0 ; 
  9148.   idclass [ 9 ] = 0 ; 
  9149.   idclass [ 34 ] = 0 ; 
  9150.   idclass [ 35 ] = 0 ; 
  9151.   idclass [ 37 ] = 0 ; 
  9152.   idclass [ 39 ] = 0 ; 
  9153.   idclass [ 40 ] = 0 ; 
  9154.   idclass [ 41 ] = 0 ; 
  9155.   idclass [ 44 ] = 0 ; 
  9156.   idclass [ 61 ] = 0 ; 
  9157.   idclass [ 123 ] = 0 ; 
  9158.   idclass [ 125 ] = 0 ; 
  9159.   {register integer for_end; i = 0 ; for_end = 127 ; if ( i <= for_end) do 
  9160.     charwidth [ i ] = 0 ; 
  9161.   while ( i++ < for_end ) ; } 
  9162.   charwidth [ 32 ] = 278 ; 
  9163.   charwidth [ 33 ] = 278 ; 
  9164.   charwidth [ 34 ] = 500 ; 
  9165.   charwidth [ 35 ] = 833 ; 
  9166.   charwidth [ 36 ] = 500 ; 
  9167.   charwidth [ 37 ] = 833 ; 
  9168.   charwidth [ 38 ] = 778 ; 
  9169.   charwidth [ 39 ] = 278 ; 
  9170.   charwidth [ 40 ] = 389 ; 
  9171.   charwidth [ 41 ] = 389 ; 
  9172.   charwidth [ 42 ] = 500 ; 
  9173.   charwidth [ 43 ] = 778 ; 
  9174.   charwidth [ 44 ] = 278 ; 
  9175.   charwidth [ 45 ] = 333 ; 
  9176.   charwidth [ 46 ] = 278 ; 
  9177.   charwidth [ 47 ] = 500 ; 
  9178.   charwidth [ 48 ] = 500 ; 
  9179.   charwidth [ 49 ] = 500 ; 
  9180.   charwidth [ 50 ] = 500 ; 
  9181.   charwidth [ 51 ] = 500 ; 
  9182.   charwidth [ 52 ] = 500 ; 
  9183.   charwidth [ 53 ] = 500 ; 
  9184.   charwidth [ 54 ] = 500 ; 
  9185.   charwidth [ 55 ] = 500 ; 
  9186.   charwidth [ 56 ] = 500 ; 
  9187.   charwidth [ 57 ] = 500 ; 
  9188.   charwidth [ 58 ] = 278 ; 
  9189.   charwidth [ 59 ] = 278 ; 
  9190.   charwidth [ 60 ] = 278 ; 
  9191.   charwidth [ 61 ] = 778 ; 
  9192.   charwidth [ 62 ] = 472 ; 
  9193.   charwidth [ 63 ] = 472 ; 
  9194.   charwidth [ 64 ] = 778 ; 
  9195.   charwidth [ 65 ] = 750 ; 
  9196.   charwidth [ 66 ] = 708 ; 
  9197.   charwidth [ 67 ] = 722 ; 
  9198.   charwidth [ 68 ] = 764 ; 
  9199.   charwidth [ 69 ] = 681 ; 
  9200.   charwidth [ 70 ] = 653 ; 
  9201.   charwidth [ 71 ] = 785 ; 
  9202.   charwidth [ 72 ] = 750 ; 
  9203.   charwidth [ 73 ] = 361 ; 
  9204.   charwidth [ 74 ] = 514 ; 
  9205.   charwidth [ 75 ] = 778 ; 
  9206.   charwidth [ 76 ] = 625 ; 
  9207.   charwidth [ 77 ] = 917 ; 
  9208.   charwidth [ 78 ] = 750 ; 
  9209.   charwidth [ 79 ] = 778 ; 
  9210.   charwidth [ 80 ] = 681 ; 
  9211.   charwidth [ 81 ] = 778 ; 
  9212.   charwidth [ 82 ] = 736 ; 
  9213.   charwidth [ 83 ] = 556 ; 
  9214.   charwidth [ 84 ] = 722 ; 
  9215.   charwidth [ 85 ] = 750 ; 
  9216.   charwidth [ 86 ] = 750 ; 
  9217.   charwidth [ 87 ] = 1028 ; 
  9218.   charwidth [ 88 ] = 750 ; 
  9219.   charwidth [ 89 ] = 750 ; 
  9220.   charwidth [ 90 ] = 611 ; 
  9221.   charwidth [ 91 ] = 278 ; 
  9222.   charwidth [ 92 ] = 500 ; 
  9223.   charwidth [ 93 ] = 278 ; 
  9224.   charwidth [ 94 ] = 500 ; 
  9225.   charwidth [ 95 ] = 278 ; 
  9226.   charwidth [ 96 ] = 278 ; 
  9227.   charwidth [ 97 ] = 500 ; 
  9228.   charwidth [ 98 ] = 556 ; 
  9229.   charwidth [ 99 ] = 444 ; 
  9230.   charwidth [ 100 ] = 556 ; 
  9231.   charwidth [ 101 ] = 444 ; 
  9232.   charwidth [ 102 ] = 306 ; 
  9233.   charwidth [ 103 ] = 500 ; 
  9234.   charwidth [ 104 ] = 556 ; 
  9235.   charwidth [ 105 ] = 278 ; 
  9236.   charwidth [ 106 ] = 306 ; 
  9237.   charwidth [ 107 ] = 528 ; 
  9238.   charwidth [ 108 ] = 278 ; 
  9239.   charwidth [ 109 ] = 833 ; 
  9240.   charwidth [ 110 ] = 556 ; 
  9241.   charwidth [ 111 ] = 500 ; 
  9242.   charwidth [ 112 ] = 556 ; 
  9243.   charwidth [ 113 ] = 528 ; 
  9244.   charwidth [ 114 ] = 392 ; 
  9245.   charwidth [ 115 ] = 394 ; 
  9246.   charwidth [ 116 ] = 389 ; 
  9247.   charwidth [ 117 ] = 556 ; 
  9248.   charwidth [ 118 ] = 528 ; 
  9249.   charwidth [ 119 ] = 722 ; 
  9250.   charwidth [ 120 ] = 528 ; 
  9251.   charwidth [ 121 ] = 528 ; 
  9252.   charwidth [ 122 ] = 444 ; 
  9253.   charwidth [ 123 ] = 500 ; 
  9254.   charwidth [ 124 ] = 1000 ; 
  9255.   charwidth [ 125 ] = 500 ; 
  9256.   charwidth [ 126 ] = 500 ; 
  9257.   {register integer for_end; k = 1 ; for_end = 5000 ; if ( k <= for_end) do 
  9258.     {
  9259.       hashnext [ k ] = 0 ; 
  9260.       hashtext [ k ] = 0 ; 
  9261.     } 
  9262.   while ( k++ < for_end ) ; } 
  9263.   hashused = 5001 ; 
  9264.   poolptr = 0 ; 
  9265.   strptr = 1 ; 
  9266.   strstart [ strptr ] = poolptr ; 
  9267.   bibptr = 0 ; 
  9268.   bibseen = false ; 
  9269.   bststr = 0 ; 
  9270.   bstseen = false ; 
  9271.   citeptr = 0 ; 
  9272.   citationseen = false ; 
  9273.   allentries = false ; 
  9274.   wizdefptr = 0 ; 
  9275.   numentints = 0 ; 
  9276.   numentstrs = 0 ; 
  9277.   numfields = 0 ; 
  9278.   strglbptr = 0 ; 
  9279.   while ( ( strglbptr < 10 ) ) {
  9280.       
  9281.     glbstrptr [ strglbptr ] = 0 ; 
  9282.     glbstrend [ strglbptr ] = 0 ; 
  9283.     incr ( strglbptr ) ; 
  9284.   } 
  9285.   numglbstrs = 0 ; 
  9286.   entryseen = false ; 
  9287.   readseen = false ; 
  9288.   readperformed = false ; 
  9289.   readingcompleted = false ; 
  9290.   readcompleted = false ; 
  9291.   implfnnum = 0 ; 
  9292.   outbuflength = 0 ; 
  9293.   predefcertainstrings () ; 
  9294.   getthetoplevelauxfil () ; 
  9295. void main_body() {
  9296.     
  9297.   initialize () ; 
  9298.   {
  9299.     (void) fprintf( logfile , "%s\n",  "This is BibTeX, C Version 0.99c" ) ; 
  9300.     (void) fprintf( stdout , "%s\n",  "This is BibTeX, C Version 0.99c" ) ; 
  9301.   } 
  9302.   {
  9303.     (void) Fputs( logfile ,  "The top-level auxiliary file: " ) ; 
  9304.     (void) Fputs( stdout ,  "The top-level auxiliary file: " ) ; 
  9305.   } 
  9306.   printauxname () ; 
  9307.   while ( lab31==0 ) {
  9308.       
  9309.     incr ( auxlnstack [ auxptr ] ) ; 
  9310.     if ( ( ! inputln ( auxfile [ auxptr ] ) ) ) 
  9311.     poptheauxstack () ; 
  9312.     else getauxcommandandproc () ; 
  9313.   } 
  9314. #ifdef TRACE
  9315.   {
  9316.     (void) fprintf( logfile , "%s\n",  "Finished reading the auxiliary file(s)" ) ; 
  9317.   } 
  9318. #endif /* TRACE */
  9319.    lastcheckforauxerror () ; 
  9320.   if ( ( bststr == 0 ) ) 
  9321.   goto lab9932 ; 
  9322.   bstlinenum = 0 ; 
  9323.   bbllinenum = 1 ; 
  9324.   bufptr2 = last ; 
  9325.   if(setjmp(jmp9998)==1) goto lab9998;if(setjmp(jmp32)==0)while(true) 
  9326.   {
  9327.     if ( ( ! eatbstwhitespace () ) ) 
  9328.     break ; 
  9329.     getbstcommandandproc () ; 
  9330.   } 
  9331.    aclose ( bstfile ) ; 
  9332.   lab9932: aclose ( bblfile ) ; 
  9333.   lab9998: {
  9334.       
  9335.     if ( ( ( readperformed ) && ( ! readingcompleted ) ) ) 
  9336.     {
  9337.       {
  9338.     (void) fprintf( logfile , "%s%ld%s",  "Aborted at line " , (long)biblinenum , " of file " ) ; 
  9339.     (void) fprintf( stdout , "%s%ld%s",  "Aborted at line " , (long)biblinenum , " of file " ) ; 
  9340.       } 
  9341.       printbibname () ; 
  9342.     } 
  9343.     traceandstatprinting () ; 
  9344.     switch ( ( history ) ) 
  9345.     {case 0 : 
  9346.       ; 
  9347.       break ; 
  9348.     case 1 : 
  9349.       {
  9350.     if ( ( errcount == 1 ) ) 
  9351.     {
  9352.       (void) fprintf( logfile , "%s\n",  "(There was 1 warning)" ) ; 
  9353.       (void) fprintf( stdout , "%s\n",  "(There was 1 warning)" ) ; 
  9354.     } 
  9355.     else {
  9356.         
  9357.       (void) fprintf( logfile , "%s%ld%s\n",  "(There were " , (long)errcount , " warnings)" ) ; 
  9358.       (void) fprintf( stdout , "%s%ld%s\n",  "(There were " , (long)errcount , " warnings)" ) ; 
  9359.     } 
  9360.       } 
  9361.       break ; 
  9362.     case 2 : 
  9363.       {
  9364.     if ( ( errcount == 1 ) ) 
  9365.     {
  9366.       (void) fprintf( logfile , "%s\n",  "(There was 1 error message)" ) ; 
  9367.       (void) fprintf( stdout , "%s\n",  "(There was 1 error message)" ) ; 
  9368.     } 
  9369.     else {
  9370.         
  9371.       (void) fprintf( logfile , "%s%ld%s\n",  "(There were " , (long)errcount , " error messages)" ) 
  9372.       ; 
  9373.       (void) fprintf( stdout , "%s%ld%s\n",  "(There were " , (long)errcount , " error messages)" ) 
  9374.       ; 
  9375.     } 
  9376.       } 
  9377.       break ; 
  9378.     case 3 : 
  9379.       {
  9380.     (void) fprintf( logfile , "%s\n",  "(That was a fatal error)" ) ; 
  9381.     (void) fprintf( stdout , "%s\n",  "(That was a fatal error)" ) ; 
  9382.       } 
  9383.       break ; 
  9384.       default: 
  9385.       {
  9386.     {
  9387.       (void) Fputs( logfile ,  "History is bunk" ) ; 
  9388.       (void) Fputs( stdout ,  "History is bunk" ) ; 
  9389.     } 
  9390.     printconfusion () ; 
  9391.       } 
  9392.       break ; 
  9393.     } 
  9394.     aclose ( logfile ) ; 
  9395.   } 
  9396.   lab9999: ; 
  9397.